gpt4 book ai didi

C:段错误

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

我创建了这个函数来读取单词。我遇到了段错误,但找不到问题所在。这就是我所做的。

void LeeCaracter(FILE * fp, char * s)

{

char c;
int i = 0;

c = fgetc(fp);
while(c==' ' || c=='\t' || c=='\n')
c = fgetc(fp);
while(c!=' ' && c!='\n')
{
s[i] = c;
i++;
c = fgetc(fp);

}
s[i] = '\0';
}

s 是一个指针参数,因为我稍后必须使用它。只写一个*是否正确?感谢您的帮助!

*如果我想知道单词(“”或“\n”)后面的字符怎么办?我在 while 循环之后添加了这个: "printf("%c",c);"但它不打印任何内容。有什么想法吗?

最佳答案

考虑:

while(c==' ' || c=='\t' || c=='\n')
c = fgetc(fp);

因此,此时 c 不存在的两件事是 ' ''\n'。然后:

while(c!=' ' && c!='\n')
{
s[i] = c;
i++;
}

由于 c 的值在循环中不会改变,因此 while 条件始终为 true。这意味着 s[i] 很快就会出界。您需要检查 s 的长度,可能是通过将其作为参数传入(更不用说,重新考虑一下您的算法 - 可能您希望在循环内进行更多的 fgetc 操作)。

关于C:段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10399657/

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