Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
结构sscanf不能正常工作?_C_File_Struct_Fgets_Scanf - Fatal编程技术网

结构sscanf不能正常工作?

结构sscanf不能正常工作?,c,file,struct,fgets,scanf,C,File,Struct,Fgets,Scanf,我正在尝试从文件向结构输入一些数据。 我在一个不同的程序中使用了相同的EXACT代码,它是否正常工作? 我不知道我错在哪里。 下面的代码不应该工作吗?也许我对sscanf不太熟悉。我需要一些帮助。多谢各位 The txt file is like this: foo.var 1241 poa.org 421 aeraf.gr 5456 oiggdf.po 98843 代码: struct filedata { char fname[50]; int fsize; }; int

我正在尝试从文件向结构输入一些数据。 我在一个不同的程序中使用了相同的EXACT代码,它是否正常工作? 我不知道我错在哪里。 下面的代码不应该工作吗?也许我对sscanf不太熟悉。我需要一些帮助。多谢各位

The txt file is like this:
foo.var 1241
poa.org 421
aeraf.gr 5456
oiggdf.po 98843
代码:

struct filedata
{
    char fname[50];
    int fsize;
};

int main()
{
    char line[60];
    int i=0;
    int numberoffiles=0;
    int lines=0;
    int ch=0;

    FILE *fp = fopen("mytext.txt","r");
    while ((ch = fgetc(fp)) != EOF)
    {
            if (ch == '\n')
                lines++;
    }

    struct filedata file[lines];
    numberoffiles=lines + 1;

    if(fp == (FILE*)NULL)
    {
        fprintf(stderr,"Cannot Open File\n");
        exit (-1);
    }
    else
    {
        while (fgets(line,60,fp)!=NULL)
        {
            sscanf(line,"%s %d",file[i].fname,&file[i].fsize);
            i++;
        }
    }
}

计算行数的循环读取整个文件,以便在开始第二个循环时,当前位置位于文件的末尾。考虑在第二个循环返回到文件的开始之前使用<代码> ReWrand(< /代码>)。


另外,查看
fp
是否为NULL的测试应该在
open()
调用之后进行。否则,读取行数的代码将失败。

除了“它不工作”之外,还有什么问题?嗯,到底是什么问题?我只是在名称和大小之间使用了一个空格。谢谢你,乔纳森。现在工作很好。啊,有办法克服这个问题吗?