如何扫描由冒号分隔的文件中的整数值

时间:2016-01-03 20:43:13

标签: c

我试图将整数值从文本文件传递给linked list

问题是文本文件的结构是列和行。

以下是关于文本文件的示例:

5:0:3
4:1:2
3:1:1
4:2:2
3:3:1

我如何获得这些值?注意到我的程序应该注意:而不仅仅是EOF。我写了一个类似的程序,但它不能照顾结肠。它只扫描整数值,直到EOF

3 个答案:

答案 0 :(得分:3)

您可以将fscanf用作

fscanf(fp, "%d:%d:%d", &var1, &var2, &var3);

答案 1 :(得分:3)

您可以使用fgets()读取行,然后使用sscanf()来解析每一行。如果这些行只包含3个整数,那么可以这样做:

int i, j, k;
char str[256];
FILE *fp = fopen("filename", "r");

if(!fp) {
   /* File opening error */
}

while(fgets(str, sizeof str, fp)) {
   char *p = strchr(str, '\n');
   if (p) *p = 0; // remove the trailing newline, if 

   if( sscanf(str, "%d:%d:%d", &i, &j, &k) == 3) {
      printf("%d %d %d\n", i, j, k);
      /* do processing with i, j & k */
   }
   else {
      /* failure */
   }
}

答案 2 :(得分:1)

您可以使用getline将整行读作字符串。

然后您可以使用字符串函数find()来查找:

之后你将保存在字符串中找到的位置:你可以使用atoi()将位于:后面一个位置的字符转换为整数。这适用于前两个数字。

对于最后一个号码,你做同样的事情,而不是:你寻找一个空间。