c - 如何从冒号分隔的文件中扫描整数值

标签 c

<分区>

我正在尝试从文本文件中获取要传递给 链表 的整数值。

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

下面是一个关于文本文件的例子:

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

我怎样才能得到这些值?请注意,我的程序应该注意到 : 而不仅仅是 EOF。我写了一个类似的程序,但它不能处理冒号。它只扫描 EOF 之前的整数值。

最佳答案

您可以使用 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 */
   }
}

关于c - 如何从冒号分隔的文件中扫描整数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34581368/

相关文章:

c - 在 C 中反转字符串

c - 返回 main 的函数

c - memcpy:第二次调用后出现段错误

c - 使用Rundll32.exe执行DLL导出的函数

将 AND 更改为 NAND 逻辑在 C 中不再起作用

C - 在不使用 int 的情况下移动数组的更快方法

c - 添加一个 int 到 char* 的中间(在 C 中)

c - msync 并没有真正将内存同步到文件

c - 获取保存给定无符号整数所需的最小字节数

c - C 中的缓冲区数组用法