整个的过程是由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的指向,从而连续的读入。