Ken*_*Ken -4 c string pointers segmentation-fault
可能重复:
是否可以修改C中的字符串?
#include <stdio.h>
void reverseStr(char *str);
main()
{
reverseStr("abcdef");
}
void reverseStr(char *str) {
char *tmp = str;
char curr;
while (*tmp != '\0') {
tmp++;
}
tmp--;
while (tmp > str) {
curr = *str;
*str = *tmp;
*tmp = curr;
str++;
tmp--;
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我得到:
/usr/bin/runit/srun_c: line 12: 2809 Segmentation fault /tmp/run_c_executable
Run Code Online (Sandbox Code Playgroud)
到底是怎么回事?我正在练习面试,我在我的C中生锈了,想要练习一些简单但不能为我的生活弄清楚这一点.我注意到当我注释掉这*str = *tmp;
条线时,seg故障消失了,我不明白为什么会导致seg故障.帮助赞赏.
您无法修改常量字符串.请改用char数组:
char str[] = "abcdef";
reverseStr(str);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
293 次 |
最近记录: |