gpt4 book ai didi

C 编程 - 更改字符串数组元素的字符

转载 作者:行者123 更新时间:2023-11-30 19:23:44 26 4
gpt4 key购买 nike

Possible Duplicate:
Problem with processing individual strings stored in an array of pointers to multiple strings in C

好吧,我正在尝试将字符串的一个字符更改为 C 中的另一个字符。问题是,每个字符串都是一维数组的一个元素,因此本质上它都是一个二维数组,因为字符串本身就是一个数组字符数。无论如何,我在创建代码来执行此操作时遇到问题。有可能做到这一点吗?任何帮助表示赞赏。

代码如下:

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

int main ()
{
int i, size;
char **a;

a=(char**)malloc(sizeof(char*));

printf("Enter the size of the array:");
scanf("%d", &size);

for(i=0;i<size;i++){
a[i]=(char*)malloc(sizeof(char)*8);
}

a[3]="Read";


while(*(a[3])!='\0'){
if(*(a[3]) == 'e'){
*(a[3]) = 'r';
}
}

printf("%s\n", a[3]);

system("pause");
return 0;

}

最佳答案

a=(char**)malloc(sizeof(char*));

printf("Enter the size of the array:");
scanf("%d", &size);

for(i=0;i<size;i++){
a[i]=(char*)malloc(sizeof(char)*8);
}

不。您已分配 1 个 char*。然后您将其视为 size 元素。您需要分配 size * sizeof(char*) 字节。 (请注意,此乘法也可能溢出。)

a[3]="Read";

糟糕的时光。您正在使用字符串文字的位置 "Read" 覆盖 a[3](之前指向 8 个字符的分配)。这会泄漏之前的分配,并将不可修改的字符串放入 a[3] 中。您应该查看 strncpy 等。为此。

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

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