fastwang 发表于 2021-5-29 23:01:46

求教这段代码问题出在哪里?

本帖最后由 fastwang 于 2021-6-1 14:12 编辑

/*符串中字母、数字、空格和其他符的个数,在主函数中输入字符串
以及输出上述的结果。*/
#include<stdio.h>
#include<string.h>
int *tongji(char strs[])
{
        static int jieguo={0,0,0,0};   /*把这里设置成静态数组,完美解决*/
        int i;
        for(i=0;i<strlen(strs);i++)
        {
                if((strs>='a' && strs) || (strs>='A' && strs<='Z'))
                {
                        jieguo++;
                }
                else if(strs>='0' && strs<='9')
                {
                        printf("进入这里了吗?\n"); //这里能打印
                        jieguo++; //这里结果是0               
                }
                else if(strs==' ')
                {
                        jieguo++;
                }
                else
                {
                        jieguo++;
                }
        }
        return jieguo;
}
int main()
{
        char strs,ch;
        int i=0;
       
        printf("输入字符串:");
        while((ch=getchar())!='\n')
        {
                strs=ch;
                i++;       
        }
        printf("%s\n",strs);
        int *jieguo=tongji(strs);
        printf("输入了%d个字符\n",jieguo);
        printf("输入了%d个数字\n",jieguo);//其他的统计结果显示正常,唯独这个始终是0;
        printf("输入了%d个空格\n",jieguo);
        printf("输入了%d个符号\n",jieguo);
        return 0;
       
}

万千只cnm 发表于 2021-5-29 23:57:15

你传进来的是指针 要解引用才是里面元素呀
if((strs>='a' && strs) || (strs>='A' && strs<='Z'))
而且你遍历的话 指针也要++ 呀   
感觉你很多不懂   

fastwang 发表于 2021-5-30 00:15:16

万千只cnm 发表于 2021-5-29 23:57
你传进来的是指针 要解引用才是里面元素呀

而且你遍历的话 指针也要++ 呀   


初学者,问题是我判断数字的时候是进去了的,都能打印文字,但是后面代码jieguo++; 没有执行;

wp231957 发表于 2021-5-30 06:34:53

fastwang 发表于 2021-5-30 00:15
初学者,问题是我判断数字的时候是进去了的,都能打印文字,但是后面代码jieguo++; 没有执行;

子程序的内部数组是不能被返回的

万千只cnm 发表于 2021-5-30 13:03:46

而且你自己编译通过了吗
全是错误、、、、

fastwang 发表于 2021-6-1 13:58:04

wp231957 发表于 2021-5-30 06:34
子程序的内部数组是不能被返回的

返回的不是数组指针吗?

fastwang 发表于 2021-6-1 13:58:44

万千只cnm 发表于 2021-5-30 13:03
而且你自己编译通过了吗
全是错误、、、、

编译通过了啊!只有数字统计为0,其他的字母符号,空格都能正确统计

fastwang 发表于 2021-6-1 14:05:51

今天无聊,问题找到了,把jieguo数组变量设置为静态的就行了;

fastwang 发表于 2021-6-1 14:08:35

fastwang 发表于 2021-6-1 13:58
返回的不是数组指针吗?

子程序的返回类型是指针类型,最后一句返回的是数字名,而不是数组的元素,所以返回的结果是指向数组的第一个指针。问题找到了,是变量设置问题,吧子程序的数组变量设置为静态就解决问题了;
页: [1]
查看完整版本: 求教这段代码问题出在哪里?