如何更改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
我的函数获取一个字符数组作为输入。如果它包含字符 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