【发布时间】:2014-09-08 18:20:25
【问题描述】:
我需要编写一个函数,它将一个字符串作为输入并输出如下
input : aaabbdd
output : a3b2d2
input : aaaaaaaaaaaaaaaabbccc
output : a16b2c3
基本上我必须将计数附加到每个字符。我不应该使用 itoa() 将 int 转换为字符串
我写了逻辑。但我对将数字附加到字符串感到震惊。例如,如果count是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);
}
【问题讨论】:
-
显示一些代码,你得到了什么,什么不起作用。
-
请发表你到目前为止所做的事情
-
为什么要存储,只要求输出?
-
@Pieter21 :我怎样才能输出它?您是否建议只打印字符和数字,而不是将其存储在缓冲区中并一次打印整个字符串?
标签: c