使用scanf从C中的txt文件读取

时间:2015-03-14 10:59:17

标签: c file scanf

我有一个txt文件,我想从中读取。我知道我必须阅读20行(每行包含3个数字变量,例如10 5 6等等)

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

int main(int argc, char *argv[]) {
int x,y,z;
int counter = 0;

FILE *fid;   
fid = fopen(argv[1],"r");

while(counter<20){
    sscanf(fid,"%d%d%d",&x,&y&z);
    //some operations made on x,y,z
    counter=counter+1;
}

fclose(fid) ;
return 0;
}

不幸的是它不起作用。 我想浏览文件并使用sscanf(fid,"%d%d%d",&x,&y,&z) 20次。 也许我应该扫描一下?如果有人能告诉我如何使其工作,我将不胜感激。

2 个答案:

答案 0 :(得分:1)

sscanf获取类型const char *的第一个参数。您将第一个参数传递为FILE *

您可以使用:

  1. fscanf
  2. OR

    1. fgetssscanf

答案 1 :(得分:0)

sscanf应更改为fscanf

fscanf扫描文件。

sscanf扫描字符串。

  1. fscanf功能
  2. fscanf函数将指定流的当前位置的数据读入参数列表中条目给出的位置(如果有)。参数列表(如果存在)遵循格式字符串。

    int fscanf (FILE *:stream, const char *format, …);
    

    2.sscanf function

    sscanf函数将数据从缓冲区读入参数列表给出的位置。到达缓冲区指向的字符串的末尾等同于fscanf函数到达文件结尾(EOF)。如果缓冲区指向的字符串和格式重叠,则不会定义行为。

    int sscanf(const char *buffer, const char *format, …);
    

    Quote from this website