整个的过程是由os的实验引起的。实验中要写一个反映出linux内核以及cpu信息的程序,从相关文件中读取就可以了。于是就用到了文件的操作》 读取文件的时候我用的是fgets(),他从文件中读取一行,因为所需要的内容不止一行,所以while(fgets(info,100,stream))。 我突然感觉为什么要这样写,fgets()会自动读取下一行的内容?于是我写了这样一个函数:
void fgets_test2() { char info[100]; FILE *stream1, *stream2; string word; stream1=fopen("d:\\textquery.txt","r"); stream2=fopen("d:\\pp.txt","r"); if(fgets(info, 100, stream1) != NULL) cout << info; if(fgets(info, 100, stream2)) cout << info; //fclose(stream1); //stream1=fopen("d:\\textquery.txt","r"); if(fgets(info, 100, stream1) != NULL) cout << info; fclose(stream1); fclose(stream2); }
发现所输出的stream1的内容还是连续的。但如果在中间重新打开文件的话会从头读入。 然后我debug一下,在这过程中找到了原因,是stream这个文件的指针在变化。我没读完一行,它就指向了下一行的首字母,也就是说fgets过程中在不断改变stream的指向,从而连续的读入。
|