gpt4 book ai didi

c - 采用字符串的方法,格式为 "aabbaadddc"。通过计算连续的字母来对字符串进行编码。例如 : "a2b2a2d3c1"

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

我已经编写了代码,但无法获得所需的输出。我犯了一些错误,但无法追查到底是什么。下面是我的代码。

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

int main()
{
char c[] = "aabbaadddc",*ptr = c,prev,t[10],*tptr = t;
int i,j,count = 0;
while(*ptr != '\0') {
prev = *ptr;
count = 0;
while(*ptr == prev) {
count++;
ptr++;
}
*tptr = prev;
tptr++;
*tptr = (char)count;
tptr++;
}
*tptr = '\0';
printf("%s\n", t);
return 0;
}

我期待 t 字符串中出现“a2b2a2d3c1”。我想知道我的错误。

最佳答案

您应该将第 17 行更改为

*tptr = (char)(count + '0');

0 的 ASCII 值添加到您的计数器。

但我会更改代码,因为它有几个问题:

  • 如果我们有 abcde (strlen = 5) 字符串,结果字符串应该是 a1b1c1d1e1 (strlen = 10 >).所以我们得到缓冲区溢出
  • 如果某些字符出现超过 10 次,我们将得到不正确的结果字符串

为了使该算法正确,我将使用另一个具有足够大小的缓冲区来存储所有值并在其中添加值(字符和数字)。要将 int 转换为 char[],请使用 itoasnprintf

关于c - 采用字符串的方法,格式为 "aabbaadddc"。通过计算连续的字母来对字符串进行编码。例如 : "a2b2a2d3c1",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20212067/

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