C - 如何将一个字符串复制到字符数组的一个元素中?

标签 c

我正在尝试解析一个文件并拥有一个字符指针数组,其长度是文件中的行数。我想将每一行复制到该数组的一个元素中,但不断出现段错误。我不明白我做错了什么,所以如果有人可以提供帮助,我将不胜感激。这是我的代码。

char * unsplitLines[numLines];
char line[20];
int i;
for(i = 0; i < lines; i++)
{
    fgets(line, 20, fp);
    //printf("%s\n", line);
    unsplitLines[i] = line;
}

gets 函数工作正常,但其后的赋值会导致段错误。

最佳答案

fgets 不会为您分配缓冲区,因此 unsplitLines 中的所有元素都存储相同的指针 line ,其内容是结尾行文件。

尝试asprintf

char * unsplitLines[numLines];
char line[20];
int i;
for(i = 0; i < lines; i++)
{
    fgets(line, 20, fp);
    asprintf(unsplitLines[i], "%s", line);
}

关于C - 如何将一个字符串复制到字符数组的一个元素中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49248643/

相关文章:

c - Valgrind 未初始化值(制作链表数据结构)

c - 在不同调用中接收指向不同结构的指针作为参数(或类似的东西)

无法访问函数 C 中的 2 DIM 数组

c - 继续从同一个父进程创建多个子进程

c - 数组中分配的值发生变化,我不明白为什么

c - PIC 将 SFR 地址传递给 C 语言中的函数

c - 如何从gdb的 "info symbol"命令获取确切位置

运行 GCC 编译的命令?

c - scanf() 将换行符留在缓冲区中

c - 为什么我的变量在从函数返回后损坏了?