c-如何替换字符串中的字符


int main(){

char* str = "bake", *temp = str;
char alpha [] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
for (int i = 0 ; temp[i] != ''; i++) {
for (int j = 0; alpha[j] != ''; j++) {
temp[i] = alpha[j];
printf("%sn",temp);
}
temp = str;
}
return 0;
}

为什么我要在一个特定的位置替换一个角色?我想把它像一样打印出来


i = 0 (index 0 he change only the first char).
aake
bake
cake
dake
....
i = 1(index 1 he change only the second char).
bake
bbke
bcke
bdke
....

我不明白为什么temp[i] = alpha[j]不起作用。。。我需要做的是,我可以更改字符。非常感谢您对的帮助

[在此输入图像描述][1][1] :https://i.stack.imgur.com/v0onF.jpg

正如评论中所说,您的代码中有几个错误。首先,正如bruno所说,你不能修改文字字符串。其次,当你写*temp=str时,你在说";指针temp现在指向与str"相同的地址;,简而言之,如果在temp中修改数组,那么也会在str中修改该数组,反之亦然,因为它们是相同的。

下面有一个可能的解决方案,使用malloc在temp中创建一个新的数组,并在每个外循环后将str复制到temp


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
char str[]= "bake",*temp;
temp=malloc((strlen(str)+1)*sizeof(char));
strcpy(temp,str);
char alpha [] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
for (int i = 0 ; temp[i] != ''; i++) {
for (int j = 0; alpha[j] != ''; j++) {
temp[i] = alpha[j];
printf("%sn",temp);
}
strcpy(temp,str);
}

return 0;
}

相关内容

  • 没有找到相关文章

最新更新