从文件中读取整数的有效方法

时间:2015-08-03 20:03:56

标签: c

我想将文件中的所有整数读入一个列表/数组。所有数字由空格(一个或多个)或结束线字符(一个或多个)分隔。这样做最有效和/或最优雅的方法是什么?禁止使用c ++库中的函数。

我是这样做的:

/* We assume that 'buffer' is big enaugh */
int i = 0;
while(fscanf(fp, "%d", &buffer[i]) != EOF) {
    ++i;
}

示例数据:

1   2     3
 4 56
    789         
9          91 56   

 10 
11

2 个答案:

答案 0 :(得分:1)

OP的代码很接近。针对1而非EOF进行测试,以便在出现非数字数据时,代码不会陷入无限循环。我会使用for()循环,但while也可以。

请注意"%d"指示fscanf()首先扫描并丢弃任何空格,包括' ''\n',然后再查找符号和数字。

#define N 100
int buffer[N];
int i,j;

for (i=0; i<N; i++) {
  if (fscanf(fp, "%d", &buffer[i]) != 1) {
    break;
  }
}

for (j=0; j<i; j++) {
  printf("buffer[%d] --> %d\n", j, buffer[j]);
}

答案 1 :(得分:0)

您可以使用fgets将文件中的每一行读取为字符串,例如char *line

然后你可以通过char循环遍历该字符串char并使用isDigit来确定该字符是否为数字。

要读取多个数字的数字,请将每个数字放在一个字符串中,并使用atoi将它们转换为整数