关于在c中读取文件

关于在c中读取文件,c,C,所以我刚从我的教授那里得到了一个帮助,制作了一个可以读写文件的程序。我在读取一个空文件时遇到了一些问题,每当我读取一个空文件时,它会输入一个空格字符和0.0。那么有什么办法可以解决这个问题吗 处理这个 这是我的阅读代码 void read() { n = 0 ; FILE *f ; f = fopen("namafile.txt","r"); if (f) { while (!feof(f)) {

所以我刚从我的教授那里得到了一个帮助,制作了一个可以读写文件的程序。我在读取一个空文件时遇到了一些问题,每当我读取一个空文件时,它会输入一个空格字符和0.0。那么有什么办法可以解决这个问题吗

处理这个

这是我的阅读代码

void read()
{
    n = 0  ;     
    FILE *f ;

    f = fopen("namafile.txt","r");
    if (f)
    {
        while (!feof(f))
        {
            fscanf(f,"%[^|]|%[^#]#%f\n", mhs[n].nim, mhs[n].nama, &mhs[n].x) ;
            n++ ;
        }     
    }
    else
    {
        printf("file not found\n");
    }
    fclose(f) ;

}

EOF
标记将在
fscanf()
失败后设置,因此需要一个失败的
fscanf()
才能结束循环。此外,您还必须检查
fscanf()
是否成功,并检查其返回值,这意味着您只需更改此值

while (!feof(f))


注意:不要使用像
f
这样的标识符,这是一个坏习惯,如果IDE没有自动完成功能,您可以证明这是一个坏习惯,但事实并非如此,您可以将标识符命名为
文件
,以明确它是什么。

是它还是,它不是同一种语言。为什么您的代码不好?如果它不好,请道歉:D,我只是个乞丐呵呵。。你能给我一些建议,如何编写一个好的代码???自从我的教授教我C++ C++库,使用C++编译程序,一个新的C和C++是不同的语言。如果你用C++编译器编译,它是C++,你应该使用C++的特性。
while (fscanf(f,"%[^|]|%[^#]#%f\n", mhs[n].nim, mhs[n].nama, &mhs[n].x) == 3)