在下面的代码中,我希望您可以看到我有一个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时,它读取该地址,并继续读取一个字符,一次查找以字符串结尾的空终止符,但该地址几乎肯定是无效的。这是未定义的行为。

10-07 19:23
查看更多