高手帮忙解决输入c语言问题

来源:百度知道 编辑:UC知道 时间:2024/04/30 08:07:49
写这样的一个程序,它要求我们输入一个字符串,,然后程序对我们输入的数进行统计.比如说我们输入584515871 则输出 5 3 (表示有3个5)
8 2 (表示有2个8)
4 1 ( 表示有1个4)
1 2 (表示哟2个1)
7 1 ( 表示有1个7)
例如:
输入:
564hghsdfhgds56436gs
输出:
5 : 2
6 : 3
4 : 2
h : 3
g : 3
s : 3
d : 3
f : 1
3 : 1

注:此题要求只有一个读取字符串的语句,并且测试的字符串大小未知(未知代表可能没有,可能成千上百至百万,以下同);输出格式可以按自己认为美观的方式输出,只要结果正确,他人容易理解就可以。
怎么能不定义数组大小就输入啊

//---------------------------------------------------------------------------

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

char *chan(int count)
{
char a;
static char * p;
if ((a=getchar())!='\n')
{
count++;
chan(count);
}
else {
p=malloc(sizeof(char)*(count+1));
*(p+count)=0;
return p;
}
*(p+count-1)=a;
return p;

}

int main(int argc, char* argv[])
{

unsigned int i,j,count,len,*scount;
char *str;
str=chan(0);
len=strlen(str);
scount=calloc(len,sizeof(int));

for (i = 0; i<len; i++) {
if (str[i]!='\n') {
scount[i]++;
for (j=i+1; j < len; j++) {
if (str[j]==str[i]) {
scount[i]++;
str[j]='\n';
}
}

}
}
for (i = 0