gpt4 book ai didi

c - 如何在c程序中将数字添加到字符串末尾?

转载 作者:行者123 更新时间:2023-11-30 20:14:37 26 4
gpt4 key购买 nike

我需要编写一个函数,该函数将字符串作为输入和输出,如下所示

input : aaabbdd
output : a3b2d2

input : aaaaaaaaaaaaaaaabbccc
output : a16b2c3

基本上我必须将计数附加到每个字符。我不应该使用 itoa() 将 int 转换为 string

我写了逻辑。但我对将数字附加到字符串感到惊讶。例如,如果计数为 16,如何将数字 16 添加到字符串末尾?

我的逻辑如下。

#include <stdio.h>

void str1(char *str)
{
int i, j, cnt;

int len = strlen(str);

char *nstr = (char *) malloc(len * sizeof(char));

int k = 0;
cnt = 1;

for(i = 0, j = 1; i < len - 1;)
{
if(str[i] == str[j])
{
j++;
cnt++;
continue;
}
else
{
if(cnt == 1)
{
nstr[k++] = str[i];
}
else
{
nstr[k++] = str[i];
nstr[k++] = cnt; // GOT STUCK HERE
}
i = j;
j = i + 1;
cnt = 1;
}
}

printf("\n%s\n", nstr);
}

main()
{
char str[] = "aaaaaaaaaaaaaaaabbcdd";

str1(str);
}

最佳答案

您可以自己实现itoa。逻辑如下:

  • 如果数字为零,则追加零(在您的情况下,这种情况永远不会发生,但在一般情况下这显然是可能的)
  • 为您的输出准备一个临时缓冲区。大小取决于您要打印的整数的位数
  • 通过计算 n % 10 存储最后一位数字
  • 使用整数除法将数字除以 10
  • 继续最后三个步骤,直到剩余部分为零
  • 将临时缓冲区中的相反数字序列附加到输出

这只是实现逻辑的一种方式。其他方法也是可能的 - 例如,您可以构建一个 10 次幂的查找表,并使用整数除法和取余数的组合来计算每个数字。

关于c - 如何在c程序中将数字添加到字符串末尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25730659/

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