c – 作为字符串维度的sizeof的分段错误
发布时间:2020-12-16 09:50:31 所属栏目:百科 来源:网络整理
导读:我正在编写一个小程序来订购字符串矩阵.在排序算法中,我使用此函数来交换两个字符串,但在相同的情况下,程序会因分段错误错误而崩溃.我已经理解它是由于我如何使用临时字符串而引起的,但我还不明白为什么. void stringSwap(char*string1,char*string2){ const
我正在编写一个小程序来订购字符串矩阵.在排序算法中,我使用此函数来交换两个字符串,但在相同的情况下,程序会因分段错误错误而崩溃.我已经理解它是由于我如何使用临时字符串而引起的,但我还不明白为什么.
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代替. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |