我被困在这里试图理解为什么这个分配在C中不能以这种方式工作。我想要做的是用下划线字符替换所有空格出现。 (输出:Hi_from_Synchronyze) 当我尝试这样做时,我看到了问题。
s[n]='_';
完整的代码就是这个
#include <stdio.h>
#include <stdlib.h>
char *underscore(char *s, int n);
int main()
{
printf("%s", underscore("Hi from Synchronyze", 0));
return 0;
}
char *underscore(char *s, int n)
{
if(s[n]=='\0')
return s;
else {
if(s[n]==' ') {
s[n]='_';
return underscore(s, n+1);
}
else return underscore(s, n+1);
}
}
我想知道behinde会发生什么,以及为什么会这样,而不是解决方案。 非常感谢您提前
答案 0 :(得分:2)
字符串文字是只读的,因此您无法分配它们。
首先制作字符串的可变副本,例如:
char text[] = "Hi from Synchronyze";
printf("%s", underscore(text, 0));