小白我在Linux下写的一个读取文件的程序,是把整个文件读入内存的,现在发现了一个不太懂的问题。
代码如下:
//全局字符串缓存区
char *g_pSourceFile;
int main(int argc, char *argv[])
{
//检查参数个数
if(argc < 2)
{
printf("没有指定文件\n");
return 0;
}
//为脚本创建一个文件指针
FILE * pSourceFile;
if(! (pSourceFile = fopen(argv[1], "rb")))
{
printf("文件读写错误!\n");
return 0;
}
//获取文件总长度(字节数)
fseek(pSourceFile, 0, SEEK_END);
int SourceSize = ftell(pSourceFile);
printf("%d\n\n", SourceSize);
fseek(pSourceFile, 0, SEEK_SET);
//创建一个足够大的字符串存入整个文件内容
g_pSourceFile = (char *)malloc(SourceSize);
char currChar; //当前字符
for(int i=0; i<SourceSize; i++)
{
currChar = fgetc(pSourceFile);
printf("%s\n", currChar);
}
return 0;
}
当我创建了一个被读取的文件,里面的内容只有123的时候(不包含回车),SourceSize输出4,包含回车的时候输出5, 请问多出的那个字节,是算哪个的?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.