C 读文件 Windows 与 Linux 的差别

同样的源代码,同样的编译器gcc

源代码:

main.c

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *args[])
{
        FILE *p1 = fopen("main.c","r");
        char buf[1024] = {0};
        while(!feof(p1))
        {
                fgets(buf,sizeof(buf),p1);
                printf("%s",buf);
        }
        fclose(p1);
        return 0;
}
// hello world

windows 运行:

D:\>gcc main.c & a.exe
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *args[])
{
        FILE *p1 = fopen("main.c","r");
        char buf[1024] = {0};
        while(!feof(p1))
        {
                fgets(buf,sizeof(buf),p1);
                printf("%s",buf);
        }
        fclose(p1);
        return 0;
}
// hello world

Linux 运行:

[email protected]:~/tmp$ gcc  main.c && ./a.out 
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *args[])
{
        FILE *p1 = fopen("main.c","r");
        char buf[1024] = {0};
        while(!feof(p1))
        {
                fgets(buf,sizeof(buf),p1);
		printf("%s",buf);
        }
        fclose(p1);
        return 0;
}
// hello world
// hello world

可以看见,Linux比Windows会多输出一行

时间: 2024-08-11 01:35:30

C 读文件 Windows 与 Linux 的差别的相关文章

windows与Linux操作系统的差别

用户需要记住:Linux和Windows在设计上就存在哲学性的区别.Windows操作系统 倾向于将更多的功能集成到操作系统内部,并将程序与内核相结合:而Linux不同 于Windows,它的内核空间与用户空间有明显的界限.根据设计架构的不同,两者 都可以使操作系统更加安全. 更多可以参考博客 http://blog.csdn.net/firefly_2002/article/details/8183030

Windows、Linux下文件操作(写、删除)错误的产生原因、及解决方法

catalog 0. 引言 1. Linux平台上涉及的File IO操作 2. Windows平台上涉及的File IO操作 0. 引言 本文试图讨论在windows.linux操作系统上基于C库进行文件IO操作时,可能遇到的错误,及其解决方法,主机安全攻防产品除了需要将安全攻防上的领域知识固化到程序实现上之外,还极度依赖关联系统本身.编程语言库的特性,原则上,并不是所有的安全需求都能100%地落实到程序设计中,这需要我们对操作系统.编程语言本身具有较深的理解 Relevant Link: h

在windows 与Linux间实现文件传输(C++&amp;C实现)

要实现windows与linux间的文件传输,可以通过socket网络编程来实现. 这次要实现的功能与<Windows下通过socket进行字符串和文件传输>中实现的功能相同,即客户端首先向服务器发送一个字符串,接着发送一个文件:服务器首先接收客户端发送的字符串,作为文件名,接着接收客户端发送的文件并保存到本地. 以window平台程序作为客户端,linux平台的程序作为服务器,并且是在局域网范围内进行文件传输. windows客户端的实现: 客户端程序在VS2012 IDE下编译运行,依旧使

【大话QT之五】Windows与Linux下文件操作监控的实现

一.需求分析: 随着渲染业务的不断进行,数据传输渐渐成为影响业务时间最大的因素.究其原因就是因为数据传输耗费较长的时间.于是,依托于渲染业务的网盘开发逐渐成为迫切需要解决的需求.该网盘的实现和当前市场上网盘实现有一些的不同,主要在客户端与服务器端的操作需要双向进行,即:用户在客户端的操作需要及时同步到服务器端:在服务器端作业渲染生成的文件要及时同步到客户端.即:用户不在需要单独的下载数据,而是在作业运行的同时,渲染就过就会自动同步到客户端,大大缩短了等待时间.当然,无论是在客户端还是在服务端都面

Java文件夹操作,判断多级路径是否存在,不存在就创建(包括windows和linux下的路径字符分析)

兼容windows和linux. 分析: 在windows下路径有以下表示方式: (标准)D:\test\1.txt (不标准,参考linux)D:/test/1.txt 然后在java中,尤其使用File对象在操作windows的路径时,非常的不好操作,因为不知道要用多少个斜杠“\”来表示. 斜杠“\”为转义字符(参考:http://www.cnblogs.com/EasonJim/p/6561576.html). 而java的File对象上无论是windows还是linux,输入的路径不管标

如何在windows下和linux下获取文件(如exe文件)的详细信息和属性

程序员都很懒,你懂的! 最近在项目开发中,由cs开发的exe的程序,需要自动升级,该exe程序放在linux下,自动升级时检测不到该exe程序的版本号信息,但是我们客户端的exe程序需要获取服务器上新程序的版本号信息.最后由我用java实现linux上exe文件的版本号读取功能.下面是详细代码: package com.herman.utils; import java.io.File; import java.io.FileNotFoundException; import java.io.I

windows下的txt文件传到Linux下中文乱码问题

之所以出现乱码是因为所压缩的文件中,有的文件是以中文命名.而在windows下中文的编码一般为gbk,而linux下中文的编码一般为utf8,所以在windows下正常打开的文件,到linux下很可能会出现乱码. 解决办法为:使用命令iconv对文件内容编码进行转换.例如我有一个文件"linux常用命令"在windows下打开正常,而在linux下打开则会乱码,办法为在终端输入: iconv -f gbk -t utf8 inputfile > outputifile 注意:ou

用rz,sz命令在windows和linux间传送文件

经常需要在windows和linux之间上传和下载文件.使用ftp工具来工作有时候会觉得比较麻烦,切来切去的十分不方便,要是能够直接在终端进行上传和下载就好了.其实真有这样的方案,就是使用ZModem. 首先,需要在linux服务器上安装rz和sz两个工具,安装完成后就可以直接使用了.就不介绍过程了,我之前的博文记录过.不清楚的同学请移步linux安装rz和sz以及使用. rz,sz是便是Linux/Unix同Windows进行ZModem文件传输的命令行工具. 然后,windows端需要支持Z

Windows 和 Linux 下生成以当前时间命名的文件

在 Windows.Linux 操作系统,分别利用BAT批处理文件和Shell脚本,生成类似“20110228_082905.txt”以“年月日_时分秒”命名的文件. Windows BAT批处理文件: @echo off set time_hh=%time:~0,2% if /i %time_hh% LSS 10 (set time_hh=0%time:~1,1%) set filename=%date:~,4%%date:~5,2%%date:~8,2%_%time_hh%%time:~3,