gpt4 book ai didi

将数组中的字母更改为 3 个不同的字母

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

我需要以某种方式更改数组中的文本,即凡是我有 a 字符的地方,我都需要将其更改为 123

示例:对于给定的文本:ayasxka 我应该得到这个:12123k123 或这个 12323k123 文本。

我几乎让它工作了,但是我得到的不是数字之间的 k,而是 s,我的意思是,这是我的结果:12123s123.

int main()
{
int i, j = 0;
char t[] = "ayasxka";
char *r = malloc(sizeof(char) * (strlen(t) + 2));
memset(r, '\0', (strlen(t) + 1));

for(i=0; t[i] != '\0'; i++)
{
if(t[i] == 'a')
{
r[i] = '1';
r[i+1] = '2';
r[i+2] = '3';
}
else
r[i+2] = t[i];
}

printf("%s\n", r);
free(r);

return 0;
}

最佳答案

在你的算法中你应该使用:

for(i=0; t[i] != '\0'; i++)
{
if(t[i] == 'a')
{
j = i;
r[j++] = '1';
r[j++] = '2';
r[j++] = '3';
}
else if(j==i)
r[j++] = t[i];
}
r[j] = '\0';

并且在您的 malloc 中,您应该为 '\0' 添加 +1 字符,因为 strlen() 不计算那个, 所以

char *r = malloc(3 + strlen(t));

代替

char *r = malloc(2 + strlen(t));

这会给你 12123k123

关于将数组中的字母更改为 3 个不同的字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28034022/

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