如何更改char数组中的字符

How to change character in char array

我的函数获取一个字符数组作为输入。如果它包含字符 e,它将用 a 和 returns 更改为新的字符数组。这是我的代码:

char echanger(char word[]){

    int total = 0;
    int i;
    char final[5];

    for(i=0;i<5;i++){
        if(word[i]=='e'){
            final[i] == 'a';
        }
        else{
            final[i] == word[i];
        }
    }

    return final;
}

我在 main() 函数中这样调用它:

int main(){

    char a[] = "helle";
    printf("new string is: %d \n",echanger(a));

}

它给了我这个输出:

new string is: -48

我在这里缺少什么?

为什么不直接修改原始字符串而不是创建一个新字符串?

void echanger(char word[]){

    int i;
    int n = strlen(word);

    for(i=0;i<n;i++){
        if(word[i]=='e'){
            word[i] = 'a';
        }
    }
}

注: =为赋值。 ==是比较。

另外你需要在printf中使用%s格式说明符来输出字符串。 %d 将尝试将字符串读取为 int,这会给您带来奇怪的值。

另外 FWIW char final[5] 不够大,无法容纳 C 字符串 "helle"。记住终止空字符。

您正在使用相等 (==) 运算符而不是赋值 (=) 运算符。将 final[i] == 'a' 更改为 final[i] = 'a'

如果我用更改重写函数,那么它将是 -

char echanger(char word[]){

    int total = 0;
    int i;
    char final[5];

    for(i=0;i<5;i++){
        if(word[i]=='e'){
            final[i] = 'a';
        }
        else{
            final[i] = word[i];
        }
    }

    return final;
}

希望对您有所帮助。
非常感谢。

您的程序有几个错误。假设字符串长度。不允许使用或写入 nul 终止符。不是 returning 指针。在你的意思是 = 的地方使用 ==。正在尝试 return 局部变量。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *echanger(char *word) {
    int len = strlen(word);
    int i;
    char *final = malloc(len+1);
    for(i=0; i<=len; i++) {         // include terminator
        if(word[i] == 'e')
            final[i] = 'a';
        else
            final[i] = word[i];
    }
    return final;
}

int main(){
    char a[] = "helle";
    char *news;
    news = echanger(a);
    printf("new string is: %s\n", news);
    free(news);                     // was from malloc
    return 0;
}

程序输出:

new string is: halla