c - 字符串复制中的段错误

标签 c pointers segmentation-fault strcpy

我收到内部 while 循环的段错误。

char **c;
c=(char **)malloc(3*(N-1)*sizeof(char *));

for(int i=0;i<3*(N-1);)
{
    char *temp;
    gets(temp);
    while(*temp!='$')
    {
        j=0;
        while(*temp!=' ')
        {
            *(c[i]+j)=*(temp+j);
            j++;
        }
        i++;
    }
    i++;
}        

抱歉缩进不当。我知道操作 char * 字符串会导致错误。但我不确定这个错误。我试图将 tmp 字符串分成三个不同的字符串。

最佳答案

您只为 3 * (N - 1) 字符串指针分配空间,而没有为字符本身分配空间。 temp 指针也未初始化,但您仍在使用 gets() 对其进行写入。这会导致未定义的行为。

还有,你shouldn't cast the return value of malloc() , 在 C 中。

关于c - 字符串复制中的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13228395/

相关文章:

c - 引用字符变量时指针变量的地址存储在哪里?

c++ - 指针数组和指向指针数组的指针

c - 将 c 变量作为数组访问

c - 在线编译时代码块出错并显示段错误?

c - 为什么我在 C 中遇到段错误?

c++ - 段错误调试器错误消息的含义?

c - 无法理解 select() 系统调用

c - 在运行时链接和加载共享库

c - 我正在从标准输入文件读取整数,并且必须在用户停止输入整数时停止。如何做到这一点?

c - 使用编译器内部函数实现自旋锁以同步 OpenMP 线程