c语言:如何实现将一维数组转化为二维数组以统计字符串中单个字符个数?

#include<stdio.h>
int main()
{char a[100],b[100][2]={0};
int i,j=1,k;
gets(a);
b[0][0]=a[0];
for(int i=1;a[i]!='\0';i++)
{while(k<i)
{k=0;
if(a[k]!=a[i])
k++;
if(a[k]==a[i]) continue;}
if(k==i) {b[j++][0]=a[i];b[j++][1]='1';}
else if(k<i&&b[k][0]==a[k]) b[k][1]=+1;
}

for(j=0;;j++)
printf("%c %c\n",b[j][0],b[j][1]);
}

二维数组的第一个字符是干什么用的,记录出现的字符吗
代码修改如下:

#include<stdio.h>
int main()
{
    char a[100],b[100][2]={0};
    int i,j=0,k;
    gets(a);
    b[0][0]=a[0];
    for( i=0;a[i]!='\0';i++)
    {
        k=0;
        while(k<j)
        {
            if(b[k][0]!=a[i])
                k++;
            else if(b[k][0]==a[i]) 
                break;
        }
        if(k==j) 
        {
            b[j][0]=a[i];
            b[j][1]=0x01;
            j++;
        }
        else //if(k<i&&b[k][0]==a[k]) 
            b[k][1]=+1;
    }

    for(k=0;k<j;k++)
        printf("%c %d\n",b[k][0],b[k][1]);
    return 0;
}

一维数组的话,就要自己计算每行的位置就行

#include <stdio.h>
#include <ctype.h>

#define N 100

int main()
{
    char a[N];
    int c[256] = {};
    fgets(a, N, stdin);
    const char *p = a;
    while (*p)
        c[*p++]++;
    printf("ASCII\tCHAR\tCOUNT\n");
    for (int i = 0; i < 256; i++)
        if (c[i] > 0)
            printf("0x%02X\t%c\t%d\n", i, isspace(i) ? ' ' : i, c[i]);
    return 0;
}

#include<stdio.h>
int main()
{
char a[100],b[100][2]={0},temp;
int i,j=0,k,m;
gets(a);
for(i=0;a[i]!='\0';i++)
{for(m=i+1;a[m]!='\0';m++)
if(a[m]<a[i])
{ temp=a[i];
a[i]=a[m];
a[m]=temp;
} }
a[m]='\0';

for( i=0;a[i]!='\0';i++)
{
    k=0;
    while(k<j)
    {
        if(b[k][0]!=a[i])
            k++;
        else if(b[k][0]==a[i]) 
            break;
    }
    if(k==j) 
    {
        b[j][0]=a[i];
        b[j][1]='1';
        j++;
    }
    else if(k<j) 
        b[k][1]=b[k][1]+1;
}
for(k=0;k<j;k++)
    printf("%c=%c\n",b[k][0],b[k][1]);
    printf("\n");
return 0;

}