将字符分配给字符串

时间:2015-12-06 21:59:01

标签: c recursion

我被困在这里试图理解为什么这个分配在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会发生什么,以及为什么会这样,而不是解决方案。 非常感谢您提前

1 个答案:

答案 0 :(得分:2)

字符串文字是只读的,因此您无法分配它们。

首先制作字符串的可变副本,例如:

char text[] = "Hi from Synchronyze";
printf("%s", underscore(text, 0));