gpt4 book ai didi

c - 如何转换我从文件 (char) 中获取的值并将这些值存储到 double 组中?

转载 作者:太空宇宙 更新时间:2023-11-04 02:50:28 25 4
gpt4 key购买 nike

我正在从一个文件中读取数据,检索我有多少列和行(数据文件),到目前为止的所有内容。现在我正在尝试一个一个地读取值并将这些值存储到二维数组( double )中。我使用 getc 将值作为 char 获取,但是当我尝试使用 atoi 或 atof 将值从 char 转换为 double 时,我得到了奇怪的值。

double ther[j][number];
char c;
int tim=0,nther=0;


FILE *fp3 = fopen("data.txt", "r");
c = getc(fp3) ;

while (c!= EOF)
{

ther[tim][nther]=atoi(&c);
printf("%lf", ther[tim][nther]);


nther++;
c = getc(fp3);

if(nther==number)
{
tim++;
nther=0;
}
tim=0;
}

fclose(fp3);

有什么建议吗?…(我一直在搜索)。抱歉,我有一个文件 data.txt,这个文件有行和列的数字:

1 2 3 4 5

6 7 8 9 10

所以我需要将数据存储到一个二维数组中:感谢这些答案,我有了一些想法,例如:使用一个字符串,然后划分所有值并存储它们中的每一个。第一行是 string-> array[0][0], array[0][1], 等等。然后移动到另一行,做同样的事情。

直到现在我得到了一些数值,但它们都没有存储在 data.txt 中。

最佳答案

首先应该是int c; . getc()函数必须能够为所有可能的 char 返回不同的值s,还有一个不同的值 EOF (表示文件结尾或流错误)。

如果您使用 char c; , 那么你必须以 EOF 结尾被转换为合法字符的值,因此您无法区分这两种情况。换句话说,您的代码可能表现得像命中了 EOF。而实际上它只是击中了那个特定的角色。

继续,atoi(&c)是不正确的。如果您阅读 atoi 的文档function——这在使用函数时总是一个好主意——你会发现它需要一个string作为输入。然而,&c不是字符串。它是单个字符的地址。

所以你的选择是:

  • 构造一个字符串并将其传递给atoi
  • 不要使用atoi

您没有说出您期望发生的事情;但是如果你想转换你在'3'中读到的字符是整数 3然后你可以写:ther[tim][nther] = c - '0'; .

但是,当您读取的内容不是数字时,您还应该有一些代码来处理情况。

如果您想一次读入多个字符(例如 "31" -> 31 ),那么使用 getc 的方法不合适 - 您需要切换到使用一次读取多个字符的函数,例如 fscanffgets .

最后,你设置了tim0每一次循环迭代,所以 tim++从来没有任何持久的影响,也许这是一个疏忽。

关于c - 如何转换我从文件 (char) 中获取的值并将这些值存储到 double 组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22704343/

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