如何让结果在主函数输出

求助如何用指针让结果(一个字符串中的字母,数字,空格,和其他字符)在主函数输出。

#include<stdio.h>
int main()
{  
    void count(char str[100]);
    char str[100];
    gets(str);
    count(str); 
}
void count(char str[100])
{
    int*l,*d,*s,*o;
    int letter=0,digit=0,space=0,other=0;
    int i;
    for(i=0;str[i]!=0;i++)
    {
    if((str[i]>'A'&&str[i]<'Z')||(str[i]>'a'&&str[i]<'z'))
        letter++;
    else if(str[i]>'0'&&str[i]<'9')
        digit++;
    else if(str[i]==32)
        space++;
    else other++;
    }
    l=&letter;
    d=&digit;
    s=&space;
    o=&other;
    printf("%d,%d,%d,%d",*l,*d,*s,*o);
}

// Q762150.cpp : This file contains the 'main' function. Program execution begins and ends there.
//

#include<stdio.h>
int main()
{
    void count(char str[100], int* l, int* d, int* s, int* o);
    char str[100];
    gets_s(str);
    int l, d, s, o;
    count(str, &l, &d, &s, &o);
    printf("%d,%d,%d,%d", l, d, s, o);
}
void count(char str[100], int *l, int *d, int *s, int *o)
{
    int letter = 0, digit = 0, space = 0, other = 0;
    int i;
    for (i = 0; str[i] != 0; i++)
    {
        if ((str[i] > 'A' && str[i] < 'Z') || (str[i] > 'a' && str[i] < 'z'))
            letter++;
        else if (str[i] > '0' && str[i] < '9')
            digit++;
        else if (str[i] == 32)
            space++;
        else other++;
    }
    *l = letter;
    *d = digit;
    *s = space;
    *o = other;
}

代码修改

#include<stdio.h>
int main()
{  
    //void count(char str[100]);
    int* count(char str[100]);
    char str[100];
    gets(str);
    //count(str);
    int *a;
    a = count(str); 
    printf("%d,%d,%d,%d",a[0],a[1],a[2],a[3]);
}

int* count(char str[100])
{
    //int*l,*d,*s,*o;
    int letter=0,digit=0,space=0,other=0;
    int i;
    for(i=0;str[i]!=0;i++)
    {
    if((str[i]>'A'&&str[i]<'Z')||(str[i]>'a'&&str[i]<'z'))
        letter++;
    else if(str[i]>'0'&&str[i]<'9')
        digit++;
    else if(str[i]==32)
        space++;
    else other++;
    }
    //l=&letter;
    //d=&digit;
    //s=&space;
    //o=&other;
    //printf("%d,%d,%d,%d",*l,*d,*s,*o);
    static int a[4] = {letter, digit, space, other};
    return a;
}

运行结果

图片说明

总结

对于函数返回多个值一般都是使用指针。

建议

1、代码格式不怎么规范,建议仔细参考书中的范例。
2、 函数count的结果是错的,如代码else if(str[i]>'0'&&str[i]<'9')就已经将数字0和9排除了,正确代码是else if(str[i]>='0'&&str[i]<='9'),(不止这一个错误)。
3、指针的用法没错,但是有些多余。

个人代码

#include <stdio.h>
int* count(char str[100]);

int main()
{  
    char str[100];
    gets(str);
    int *a = count(str); 
    printf("%d,%d,%d,%d",a[0],a[1],a[2],a[3]);
}

int* count(char str[100])//统计字母、数字、空格和其它的字符数,返回指针 
{
    int letter=0,digit=0,space=0,other=0;
    int i;
    for(i=0;str[i]!=0;i++)
    {
        if((str[i]>='A'&&str[i]<='Z')||(str[i]>='a'&&str[i]<='z'))//统计字母 
        {
            letter++;
        }   
        else if(str[i]>='0'&&str[i]<='9')//统计数字 
        {
            digit++;
        }
        else if(str[i]==32)//统计空格 
        {
            space++;
        }
        else other++;//统计其它 
    }
    static int a[4] = {letter, digit, space, other};
    return a; 
}

运行结果

图片说明