c - sizeof 作为字符串维度的段错误

标签 c arrays segmentation-fault sizeof dimension

我正在编写一个小程序来对字符串矩阵进行排序。在排序算法中,我使用此函数交换两个字符串,但在相同情况下,程序因 Segmentation Fault Error 而崩溃。我知道这是由我如何初始化 temp string 引起的,但我不明白为什么。

void stringSwap(char*string1,char*string2)
{   const int dim=sizeof(string1);
    char temp[dim];
    strcpy(temp,string1);
    strcpy(string1,string2);
    strcpy(string2,temp);
}

有人能解释一下为什么会出现这个错误吗?还有另一种模式可以在不使用我实际上不知道的动态分配的情况下正确地做这件事吗?非常感谢!

最佳答案

sizeof(string1) 是 4 或 8 个字节,具体取决于您的系统。

您应该改用 strlen(string1)+1

关于c - sizeof 作为字符串维度的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21738761/

相关文章:

swift - Swift 中使用协议(protocol)的通用观察者模式会导致段错误

c - 从列表中删除节点时出现段错误 (C)

python - tp_clear、tp_dealloc 和 tp_free 之间有什么区别?

java - 数组实例变量与setter方法摄入无关吗?

javascript - 向数组添加和删除复选框值不起作用

arrays - 从正则表达式结果中删除大括号

c - 无法调试导致 shell 出现段错误的 .so 库

c - c中结构体数组每个元素的大小

c语言创建一个文件,在文件中写上hello world

c - 减少非线性模拟值到数字输出