gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 16:56:18 25 4
gpt4 key购买 nike

我是 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com