c - 从c中的文件中读取分号后的整数 "unfixed"个数

标签 c arrays file dynamic

使用 sscanf 或任何其他命令从分号后的文件读取的最佳方法是什么,例如,如果我的文件有 5: 4 5 6 7。如何将冒号后的值存储在数组中。此外,分号后面的整数数量可能会有所不同,即在上面给出的示例中,它们是 4,但也可以是 5、3 或 10。处理此问题的最佳方法是什么。

最佳答案

所有数字都在一行上,这很容易。基本上,您想要使用 fgets() 读取一行,并通过在空格处拆分将其拆分为单独的数字,并将每个单词转换为整数。有很多方法可以做到这一点,但我喜欢利用strtol()将记录其转换的数字末尾的位置,以便将两个步骤合并为一个。像这样的东西:

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

int main(void) {
  char line[] = "5: 4 5 6 7";
  char *curr = line;

  while (*curr) {
    char *end;
    int n = strtol(curr, &end, 10);
    if (curr == end) {
       fputs("Found something not a number!\n", stderr);
       return EXIT_FAILURE;
    } else if (*end == ':') {
      printf("Line header: %d\n", n);
      end++;
    } else {
      printf("Number %d\n", n);
    }
    curr = end;
  }
  return 0;
}

编译并运行它会产生:

Line header: 5
Number 4
Number 5
Number 6
Number 7

您当然可以将数字存储在数组中,而不是仅仅将它们打印出来,但这应该会给您一个总体思路。

关于c - 从c中的文件中读取分号后的整数 "unfixed"个数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55231195/

相关文章:

java - 为什么我可以在java中创建一个0行5列的二维数组?

php - 在文件中间覆盖

c - 使用范围值的 for 循环

c - 使用线程查找二维数组中的最大数

javascript - 是否可以在Android中编写一个生成两个数组的函数

c - 文件末尾后有哪些字符?

python - 使用python修改文件内容

c中两个数组的公共(public)数字函数

更改我在 C 函数中传递的指针

c - 做像 foo(x, &x) 这样的事情安全吗?