【发布时间】:2023-04-09 23:58:01
【问题描述】:
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] != '\0'; i++) {
for (int j = 0; alpha[j] != '\0'; j++) {
temp[i] = alpha[j];
printf("%s\n",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
【问题讨论】:
-
对于初学者来说,更改由字符串文字生成的字符串是未定义的行为。
char *str = "bake";应该是char str[] = "bake"; -
无法修改文字(常量)字符串。请注意,您的算法尝试用 alpha 的最后一个非空字符填充 temp,所以 zzzz...zz
-
*temp = str看起来很奇怪,并且与以后如何使用temp不符。你的意思是使用char *temp = strdup(str);? -
Re "
alpha[j] != '\0'",'\0'不在alpha中的任何地方 -
我的最后一条评论解释了您遇到的错误