gpt4 book ai didi

c - 阅读一个txt。以 (int float float string) 的格式并将值放入并行数组中

转载 作者:太空宇宙 更新时间:2023-11-04 03:34:20 24 4
gpt4 key购买 nike

1 42.4 73.45 Albany, N.Y.
2 35.05 106.39 Albuquerque, N.M.
3 35.11 101.5 Amarillo, Tex.
4 61.13 149.54 Anchorage, Alaska
5 33.45 84.23 Atlanta, Ga.
6 30.16 97.44 Austin, Tex.

在 .txt 文件中以 int float float string 格式给出这样的表格,我必须读取该文件并将数据放入相应的数组中。

数据必须输入到并行数组中

  • 第 1 列是 cityid

  • 第 2 列是 x 坐标

  • 第 3 列是 y 位置

  • 第4列是城市名

我可以读取数组,但我不知道如何将数据放入相应的数组。

我试过用

while ((fscanf(filePtr, "%d %f %f %[^'\n']", cityid, x_location, y_location, city_name)) == 4)

但是循环遍历整个文件并且只将最后一个条目放入数组中。

所以我尝试了这个循环

while (fscanf(filePtr, "%d %f %f %[^'\n']", tcityid, tx_location, ty_location, cityname) == 4)

{
cityid[i] = tcityid;

x_location[i] = tx_location;

y_location[i] = ty_location;

*city_name[i] = cityname;

}

所以我的想法是 fscanf 将读取一行并将每个值放入相应的变量中,然后将其复制到数组中。我的代码将构建并运行,但是当它到达 while 循环时,它会抛出一个错误,指出

将无效参数传递给认为无效参数致命的函数。

我认为问题出在 city_name 上,我不太确定如何处理它。任何帮助将不胜感激。谢谢

最佳答案

问题是 scanf 不接受格式规范中的正则表达式。此外,您不能只使用 %s,因为它会在第一个空格处停止,因此状态名称会被截断。我能建议的最好的方法是使用 fgets() 在一行中读入一个名为“line”的字符串。然后使用 sscanf 提取前三个数字。然后使用 strchr 3 次找到第 3 个空格,这是城市名称开始的地方。最后使用 strdup() 复制城市名称,您可以将其存储在数组中。您不能简单地将指针保存到“行”中,因为每次您在新行中读取时,行都会被覆盖。

关于c - 阅读一个txt。以 (int float float string) 的格式并将值放入并行数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33838456/

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