用不同的字符替换指向的字符

时间:2014-11-26 23:10:10

标签: c

更具体地说,我试图用四个星号替换我的指针指向的四个字符,而不使用字符数组。 因此,如果我使用此方法的单词char *word = "Word"将返回****

这是我到目前为止所拥有的,

void four_stars(char *start){
    char *temp = start;
    int length = 0;
    while(*temp){
        length++;
        temp++;
    }
    if(length==4){
        while(length>=0){
            start = '*';
            start++;
            length--;
        }
    }
}

我使用单词char *word = "This"对其进行了测试,输出只是This,这是同一个单词。 我对c编程很陌生,所以我做错了什么?

2 个答案:

答案 0 :(得分:0)

如果您有char *word = "Word",则无法修改"Word"。这是因为,在C和C ++中,字符串文字是不可修改的。你必须从一个可写存储区中的字符串开始,例如:

char word[] = "Word";

char *word = malloc(5);
strcpy(word, "Word");

然后您的功能会起作用(如果您将start = '*';更改为*start = '*';)。

答案 1 :(得分:-1)

// the code you wrote has a few flaws
// rather than trying to list the flaws
// I just provide a simplistic/brute force example to accomplish the function

void four_stars(char *start)
{
    start[0] = '*';
    start[1] = '*';
    start[2] = '*';
    start[3] = '*';
}