gpt4 book ai didi

在 C 中更改字符串数组中的字符

转载 作者:太空宇宙 更新时间:2023-11-04 05:55:06 25 4
gpt4 key购买 nike

我尝试将字符串数组中的“a”字符更改为“e”。但是我收到一条错误 *pos = 'e'; 行。它说“Main.exe 已停止工作”。我不明白这个问题。你有什么想法吗?

int main(void) {
char *sehirler[] = { "Istanbul", "Ankara", "Izmir", "\0" };
int i;
for (i = 0; *sehirler[i] != '\0'; ++i) {
char *pos = sehirler[i];
while (*pos != '\0') {
if (*pos == 'a') {
printf("%c", *pos);
*pos = 'e'; //ERRROR
}
pos++;
}
}
return 0;
}

最佳答案

你的不是字符串数组,它是指向字符串文字的指针数组,你不能更改字符串文字。

要使它成为一个数组试试这个

int main(int argc, char *argb[])
{
char sehirler[4][9] = {"Istanbul", "Ankara", "Izmir", ""};
/* ^ ^
* | |__ Number of characters in `Istanbul' + '\0'
* |_ Number of strings in the array
*/
int i;
for (i = 0 ; *sehirler[i] != '\0' ; ++i)
{
char *pos = sehirler[i];
while (*pos != '\0')
{
if (*pos == 'a')
{
printf("%c", *pos);
*pos = 'e'; //ERRROR
}
pos++;
}
}
return 0;
}

您可能需要使用 malloc() 分配空间,然后使用 strcpy() 复制文字,然后该副本将是可修改的。

关于在 C 中更改字符串数组中的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29501993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com