在下面的代码中,我希望您能看到我有一个 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/