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

标签 c linked-list

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

相关文章:

Java处理字符串中的逗号

c - 具有生命游戏功能的段错误

c# - PInvoke "Attempted to read or write protected memory"

c - 二维数组中的动态内存分配

java - 如何在链表中的另一个元素之前插入 和 元素

java - 如何使 Java 中的自定义泛型类型链表排序?

c - SPI 在 Odroid-C1 上的 MODE_0 中无法正常工作。 Linux 内核 pinctrl 子系统。

c - pthread_cancel会在线程做IO的时候取消一个线程吗?

c++ - 区间树中链表元素的插入

algorithm - 链表 :How can we tell if the usage of a dummy node is absolute necessity?