C 读取文件并将数字保存在数组中

标签 c arrays loops parsing while-loop

我是 C 初学者。

我需要读取文件并将数字保存在数组中。我尝试了 for 循环和 while 循环,但无法创建正确的条件。每次当循环遇到文件中的空行时,我都会得到一个带零的数组。

我尝试使用临时变量来赋值,然后将其传递给数组。并尝试将值直接传递给数组。

我的代码:

for (i = 0; i < (num_pt + 1);)
{
   fgets(line, 50, fp);
   if (sscanf(line,"%d%d", &tempx, &tempy))
   {
       x_cr[i] = tempx;
       y_cr[i] = tempy;

       printf("%d %d\n", x_cr[i], y_cr[i]);
    }
    i++;
}

最佳答案

请注意,您对 sscanf() 的调用可能会返回 EOF01 2,并且只有当结果为 2 时,才可以安全地使用 tempxtempy 中的值。

考虑这个示例代码:

#include <stdio.h>

int main(void)
{
    int x;
    int y;
    char *str[] = { "", "a", "1 a", "1 2" };
    enum { NUM_STR = sizeof(str) / sizeof(str[0]) };
    for (int i = 0; i < NUM_STR; i++)
    {
        int rc = sscanf(str[i], "%d %d", &x, &y);
        printf("rc = %2d for [%s]\n", rc, str[i]);
    }
    return 0;
}

在 macOS Sierra (10.12) 上运行时,输出为:

rc = -1 for []
rc =  0 for [a]
rc =  1 for [1 a]
rc =  2 for [1 2]

所以,您的支票应该是:

if (sscanf(line,"%d%d", &tempx, &tempy) == 2)

您的另一个问题是 i++ 应该位于此 if 条件的主体内;添加数据时只应增加 i

关于C 读取文件并将数字保存在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39947152/

相关文章:

c - 在添加值时保持相同的数组大小

javascript - Uint8Array 到 Uint32Array(客户端)

javascript - 多次循环一个数组,直到完成第二个数组

c - 使用函数从 int* 到 int 的转换无效

c - 在 C 程序中使用 Picocom 来读/写流

C:将double转换为float,保留小数点精度

c - 使用 malloc 为数组分配内存

c++ - 发送 2 个整数的数组作为参数

jquery - 显示来自 jquery 每个循环的延迟数据

java - 为什么我无法计算销售金额和销售税金额?