C:从文件中读取数字和字符串

时间:2014-03-29 12:59:56

标签: c file-io input

我必须从txt文件中读取数据,如下所示:

  • 11 27 12 OY-5158
  • 11 28 12 WM-2037
  • 12 29 46 PY-6651

最后一部分必须是一个字符串,总是有7个字符。

我试过这个:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i;
    int sorok;
    char s[1000];   //Max number of lines

    FILE *f = fopen("jarmu.txt","r");

    while( (fgets(s, sizeof(s), f)) != NULL) {
      sorok++;
    }

    int idopont[sorok][3];
    char rendszam[sorok][7];

    while (!feof(f))
    {
        for(i=0; i<sorok; i++)
        fscanf(f,"%d %d %d %7s",&idopont[i][0],&idopont[i][1],&idopont[i][2],&rendszam[i]);
    }

    for(i=0; i<sorok; i++)
    printf("%d %d %d %7s\n",idopont[i][0],idopont[i][1],idopont[i][2],rendszam[i]);

    return 0;
}

但它不起作用。你能帮帮我吗?

1 个答案:

答案 0 :(得分:0)

你的问题很简单:

目前,您只读取文件一次以获取行数,然后再次解析这些行。你忘记了两者之间的倒带。使用:fseek(f, 0, SEEK_SET);

另外,请勿忘记删除while(!feof(f))循环包含正文。

或者,只读取一次文件并直接解析这些行。

下一个问题:C使用以0结尾的字符串,并且您没有为终止0保留空间。请更正。

最终错误:fscanf(f,"%d %d %d %7s",&idopont[i][0],&idopont[i][1],&idopont[i][2],&rendszam[i]); 应为fscanf(f,"%d %d %d %7s",&idopont[i][0],&idopont[i][1],&idopont[i][2],rendszam[i]);: 类型应为FILE*, char*, int*, int*, int*, char*。最后一个是char**