C语言指针问题,请各位看看

  1. 函数fun完成的是对一个给定的字符串,统计其中数字、大小写字母及其他符号的个数的功能,在主程序中输入字符串并调用函数fun,接收并输出返回的结果。
    如下就是完成这个题目的程序,但其中有一些错误,请调试通过并将错误的语句改正填写在表格中。
    #include <stdio.h>
    void main()
    {
     int d,c,t;
     char str[80];
     void fun(char s[],int *p1,int *p2,int *p3);
     printf("input a string:");
     gets(str);
     fun(str[80],d,c,t);
     printf("str=%s  digit=%d  char=%d  other=%d\n",str,d,c,t);
    
    }
    void fun(char ch[ ], int *pd,int *pc,int *pt)
    {
     int k;
     pd=pc=pt=0;
     for (k=0;ch[k]!='\0';k++)
     {
         if ((ch[k]>='A'&&ch[k]<='Z')&&(ch[k]>='a'&&ch[k]<='z'))  (*pc)++;
         else if (ch[k]>='0'&&ch[k]<='9')                      (*pd)++;
         else                                             (*pt)++;
     }
    
    }

帮你调试好了

#include <stdio.h>
void main()
{
    int d, c, t;
    char str[80];
    void fun(char s[], int* p1, int* p2, int* p3);
    printf("input a string:");
    gets(str);
    fun(str, &d, &c, &t);
    printf("str=%s digit=%d char=%d other=%d\n", str, d, c, t);
}
void fun(char ch[], int* pd, int* pc, int* pt)
{
    int k;
    *pd = *pc = *pt = 0;
    for (k = 0; ch[k] != '\0'; k++)
    {
        if ((ch[k] >= 'A' && ch[k] <= 'Z') || (ch[k] >= 'a' && ch[k] <= 'z'))
            (*pc)++;
        else if (ch[k] >= '0' && ch[k] <= '9') 
            (*pd)++;
        else 
            (*pt)++;
    }
}

你的调用函数错误了,fun(str[80],d,c,t);
应该更改为fun(str,&d,&c,&t);

函数传参要传入地址信息

img


#include <stdio.h>
int main() {
    int d, c, t;
    char str[80];
    void fun(char s[], int* p1, int* p2, int* p3);
    printf("input a string:");
    gets(str);
    fun(str, &d, &c, &t);
    printf("str=%s digit=%d char=%d other=%d\n", str, d, c, t);
}
void fun(char ch[], int* pd, int* pc, int* pt) {
    int k;
    *pd = *pc = *pt = 0;
    for (k = 0; ch[k] != '\0'; k++) {
        if ((ch[k] >= 'A' && ch[k] <= 'Z') )
            (*pc)++;
        else if ( (ch[k] >= 'a' && ch[k] <= 'z'))
           (*pc)++;
        else if (ch[k] >= '0' && ch[k] <= '9')
            (*pd)++;
        else
            (*pt)++;
    }
}

谢谢大家

void fun() *改为& 试试