fscanf用新行填充0

时间:2014-05-14 17:11:01

标签: c

我在阅读最后有多个新行的控制文件时遇到了问题。

    void readControlFromFile (FILE *f)
    {   
    int N = 100;
    controlData = (ControlEntry **)malloc(sizeof(ControlEntry *) * N);
    char line [10];
    controlData[0] = (ControlEntry *)malloc(sizeof(ControlEntry));
    fscanf (f, "%d %d %d", &controlData[0]->occurance, &controlData[0]->text, &controlData[0]->pattern);
    while(fgets(line, 10, f) != NULL)
    {
        controlData[lineCount] = (ControlEntry *)malloc(sizeof(ControlEntry));
        fscanf (f, "%d %d %d", &controlData[lineCount]->occurance, &controlData[lineCount]->text, &controlData[lineCount]->pattern);
        //printf("%d %d %d \n", controlData[lineCount]->occurance, controlData[lineCount]->text, controlData[lineCount]->pattern);
        lineCount++;

        if(lineCount == N)
        {
            N*=2;
            controlData = (ControlEntry **)realloc(controlData, sizeof(ControlEntry *) * N);
        }
    }


}

fscanf似乎将默认值0放入缓冲区,我尝试了如下中断:

if(line[0] == '\n')
{
 break;
}

但无济于事。我知道这将是一个简单的修复,但我对C有点新。

由于

1 个答案:

答案 0 :(得分:0)

您必须检查fscanf(或任何其他* scanf)的返回值。它会告诉你读了多少令牌。