gpt4 book ai didi

c - 用C语言打开文件时出现段错误?

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

我对编程非常陌生,我正在尝试编写读取“numbers.tsv4”的代码(.tsv4 表示制表符分隔值,4 到一行)并将数字放入数组中。现在我只是专注于计算文件中的数字数量,这样我就可以初始化数组大小。

    int main(void)
{
int cur;
FILE* spData;
int size=1;

spData = fopen("numbers.tsv4", "r");

while ((cur = fgetc(spData)) != EOF) {
if ((cur = fgetc(spData)) == '\t') {
size++;}
}
fclose(spData);
printf("%d", size);
return;
}

我不断遇到段错误,并且我更改了很多东西来尝试解决它。有人可以帮我吗?谢谢!

最佳答案

您的 while 语句的结构是问题所在。在每次迭代开始时,您已经使用 fgetc() 获取下一个字符并将其分配给 cur。然后在循环内部的 if(...) 语句中,通过调用新的 fgetc() 并分配结果为cur。因此,按以下方式更改:

while ((cur = fgetc(spData)) != EOF) {
if (cur == '\t') {
size++;}
}

你看,当您尝试调用 fgetc() 两次时(均在 while(...)if(...)),您可能会在 if(...) 语句中得到 EOF。然后,在使用 while(...) 语句的下一次迭代中,您尝试访问文件外的某个位置,这会导致段错误。

关于c - 用C语言打开文件时出现段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40196821/

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