fgets的问题
先贴一段代码 也是论坛里面的问题
代码就是实现删除打开文件的第一行,这个不是重点
对fgets有一点疑惑,请高手解答
1.如果连续对一个文件读取fgets 如:
fgets(buffer1,MAXSIZE,fin);
fgets(buffer2,MAXSIZE,fin);则会读取文件的第一行 和第二行,好像里面设置了一个什么?为什么第二个直接读的就是第二行?
2 也就是我程序里面注释的问题,我调试了 注释掉memset程序照样可以运行。小弟有点想不通,
如果我第一行是 :i love you
第二行是 :you
采用循环while(fgets(buffer,MAXSIZE,fin) != NULL)那么第一次buffer里面是i love you,我没有疑问,第二次为什么不是
you加上后面的ove you? fgets执行前自动先耍行buffer?还是如果从buffer的首地址写入数据 buffer里面的内容就自动刷新了?
求解答!!
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define MAXSIZE 100
int main(void)
{
char buffer[MAXSIZE];
FILE *fin,*fout;
if((fin = fopen("c:\\file.txt","r")) == NULL){
perror("open fin error\n");
exit(1);
}
if((fout = fopen("c:\\out.txt","w+")) == NULL){
perror("creat outfile error!\n");
exit(1);
}
fgets(buffer,MAXSIZE,fin);
// memset(buffer,0,MAXSIZE);
while(fgets(buffer,MAXSIZE,fin) != NULL){
fputs(buffer,fout);
// memset(buffer,0,MAXSIZE);
}
fclose(fin);
fclose(fout);
remove("c:\\file.txt");
rename("c:\\out.txt","c:\\file.txt");
}
代码就是实现删除打开文件的第一行,这个不是重点
对fgets有一点疑惑,请高手解答
1.如果连续对一个文件读取fgets 如:
fgets(buffer1,MAXSIZE,fin);
fgets(buffer2,MAXSIZE,fin);则会读取文件的第一行 和第二行,好像里面设置了一个什么?为什么第二个直接读的就是第二行?
2 也就是我程序里面注释的问题,我调试了 注释掉memset程序照样可以运行。小弟有点想不通,
如果我第一行是 :i love you
第二行是 :you
采用循环while(fgets(buffer,MAXSIZE,fin) != NULL)那么第一次buffer里面是i love you,我没有疑问,第二次为什么不是
you加上后面的ove you? fgets执行前自动先耍行buffer?还是如果从buffer的首地址写入数据 buffer里面的内容就自动刷新了?
求解答!!
...全文
相关推荐
如何解决fgets读取popen内容阻塞的问题
如何解决fgets读取popen内容阻塞的问题
fgets_fgets_
Implementation of fgets file handling function in c.
C语言中输入函数(scanf()、fgets()和gets())的区别详解
主要给大家介绍了关于C语言中三种输入函数(scanf()、fgets()和gets())区别的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
C语言fgets函数详解[项目代码]
本文详细介绍了C语言中的fgets函数,包括其原型、参数、返回值及使用注意事项。fgets函数用于从流中读取字符串,其原型为char *fgets(char *s, int n, FILE *stream),其中s为存储读入数据的缓冲区地址,n为读取的字符数减一,stream为指向读取的流。文章还讨论了fgets函数在不同情况下的行为,如当n小于等于0时返回NULL,当n等于1时返回空串,以及读入成功和错误时的返回值。此外,文章提供了fgets函数的标准库实现示例,并强调了在使用指针时需要为其分配内存空间的重要性。最后,文章还介绍了如何使用fgets函数读取整个文件内容以及从标准输入设备读取数据的方法。
fgets函数用法
详细描述了fgets函数的用法,该函数可读取文件中的字符串,可供C/CPP开发人员参考。


