gpt4 book ai didi

c - 使用 strtok 标记数字列表的程序中的错误 0Xc0000005

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

我目前正在编写一个获取文本文件作为输入的 c 程序。在每一行中,我都得到一个已知的提前 n 个 float ,用逗号分隔。示例行:

0.92,0.21,0.98,1
0.23,0.37,0.29,-1
0.22,0.35,0.63,1
0.14,0.89,0.78,-1
0.26,0.42,0.67,1
0.01,0.77,0.92,-1
0.67,0.12,0.59,-1

我需要将数字放入一个数组中。这是我的部分代码:

strcpy(tmp_line,strtok (line,","));
for(int j = 0;j < n + 1; j++)
{
vec.arr[j] = atof(tmp_line);
strcpy(tmp_line,strtok (NULL, ","));
}

我不知道为什么,当我使用 clion 时,在循环结束时程序就停止运行了。当我使用代码块时,它会给出此消息

PROCCES RETURNED (0Xc0000005)

这意味着我们正在使用我们无法访问的内存。

帮助?有人吗?


一些注意事项:vec 是一个 Vector 结构。 Vector 结构包含一个 75 长数组和一个 (int) 标记。我们使用数组的前 n 个单元格,并将标签(+ 或 - 1)放入第 n+1 个单元格(和标签部分)。

tmp_line 是一个包含当前行的字符数组。

最佳答案

当我看到你的代码时,问题似乎出在

 strcpy(tmp_line,strtok (NULL, ","));

for 循环中。完成分词后,strtok() 将返回 NULL,这被认为是 strcpy() 的无效参数。

您应该分解该语句,将 strtok() 的返回值收集到一个临时指针变量中,检查是否为 NULL,如果不为 NULL,则执行 strcpy().

关于c - 使用 strtok 标记数字列表的程序中的错误 0Xc0000005,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31836575/

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