gpt4 book ai didi

c - 将字符串存储在 C 中的 char* 中

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

在下面的代码中,我希望您能看到我有一个 char* 变量,并且我想从文件中读取一个字符串。然后我想从函数传回这个字符串。我对指针感到很困惑,所以我不太确定我应该做什么。

这样做的目的是将数组传递给另一个要搜索名称的函数。

不幸的是,程序因此崩溃了,我不知道为什么。

char* ObtainName(FILE *fp)
{
char* temp;
int i = 0;

temp = fgetc(fp);
while(temp != '\n')
{
temp = fgetc(fp);
i++;
}
printf("%s", temp);
return temp;
}

如有任何帮助,我们将不胜感激。

最佳答案

fgetc 返回一个 int,而不是一个 char*。此 int 是流中的一个字符,如果到达文件末尾,则为 EOF

您正在将 int 隐式转换为 char*,即将其解释为地址(打开警告。)当您调用 printf 它读取该地址并一次继续读取一个字符,寻找结束字符串的空终止符,但该地址几乎肯定是无效的。这是未定义的行为。

关于c - 将字符串存储在 C 中的 char* 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23228462/

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