在C中只读取文件的一部分

时间:2015-12-05 01:59:26

标签: c text

我正在尝试为自己创建一个程序来添加.txt文件中的数字。让我们说我的文件看起来像这样:

0004    78  118
0014    79  118
0024    79  119
0034    77  119
0044    76  118
0054    76  117
0064    77  118
0074    75  119
0084    80  121
0094    81  122

我遇到的问题是我已经决定我希望能够一次仅添加其中一个列中的数字,并且无法找到一种方法。有没有人对我的方式有任何想法,例如,只添加第二列的所有数字?谢谢。

2 个答案:

答案 0 :(得分:1)

这样的东西?

%*s =读取一个由空格分隔的字符串并将其丢弃

#include <stdio.h>

int main(void) {
    FILE* fp;
    int sum = 0, data;
    fp = stdin; /* or open the file you want to deal with */
    while (fscanf(fp, "%*s%d%*s", &data) == 1) {
        sum += data;
    }
    fclose(fp);
    printf("sum = %d\n", sum);
    return 0;
}

答案 1 :(得分:0)

创建一个帮助函数,选择您想要读取的列;

// 1: Success
// 0: Ill formatted data
// EOF: No more data
int read_column(int index, int *value) {
  char buf[100];
  if (fgets(buf, sizeof buf, stdin) == NULL) return EOF;
  int d[3];
  if (sscanf("%d%d%d", &d[0], &d[1], &d[2]) != 3) return 0;
  *value = d[index];
  return 1;
}