鱼C论坛

 找回密码
 立即注册
查看: 2432|回复: 8

[已解决]求教这段代码问题出在哪里?

[复制链接]
发表于 2021-5-29 23:01:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

/*符串中字母、数字、空格和其他符的个数,在主函数中输入字符串
以及输出上述的结果。*/
#include<stdio.h>
#include<string.h>
int *tongji(char strs[])
{
        static int jieguo[4]={0,0,0,0};   /*把这里设置成静态数组,完美解决*/
        int i;
        for(i=0;i<strlen(strs);i++)
        {
                if((strs[i]>='a' && strs[i<='z']) || (strs[i]>='A' && strs[i]<='Z'))
                {
                        jieguo[0]++;
                }
                else if(strs[i]>='0' && strs[i]<='9')
                {
                        printf("进入这里了吗?\n"); //这里能打印
                        jieguo[1]++; //这里结果是0               
                }
                else if(strs[i]==' ')
                {
                        jieguo[2]++;
                }
                else
                {
                        jieguo[3]++;
                }
        }
        return jieguo;
}
int main()
{
        char strs[100],ch;
        int i=0;
       
        printf("输入字符串:");
        while((ch=getchar())!='\n')
        {
                strs[i]=ch;
                i++;       
        }
        printf("%s\n",strs);
        int *jieguo=tongji(strs);
        printf("输入了%d个字符\n",jieguo[0]);
        printf("输入了%d个数字\n",jieguo[1]);//其他的统计结果显示正常,唯独这个始终是0;
        printf("输入了%d个空格\n",jieguo[2]);
        printf("输入了%d个符号\n",jieguo[3]);
        return 0;
         
}
最佳答案
2021-5-30 06:34:53
fastwang 发表于 2021-5-30 00:15
初学者,问题是我判断数字的时候是进去了的,都能打印文字,但是后面代码jieguo[1]++; 没有执行;

子程序的内部数组是不能被返回的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-29 23:57:15 | 显示全部楼层
你传进来的是指针 要解引用才是里面元素呀  
  if((strs>='a' && strs[i<='z']) || (strs>='A' && strs<='Z'))
而且你遍历的话 指针也要++ 呀   
感觉你很多不懂     
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-30 00:15:16 | 显示全部楼层
万千只cnm 发表于 2021-5-29 23:57
你传进来的是指针 要解引用才是里面元素呀  

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

初学者,问题是我判断数字的时候是进去了的,都能打印文字,但是后面代码jieguo[1]++; 没有执行;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-30 06:34:53 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
fastwang 发表于 2021-5-30 00:15
初学者,问题是我判断数字的时候是进去了的,都能打印文字,但是后面代码jieguo[1]++; 没有执行;

子程序的内部数组是不能被返回的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-30 13:03:46 | 显示全部楼层
而且你自己编译通过了吗  
全是错误、、、、
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-1 13:58:04 | 显示全部楼层
wp231957 发表于 2021-5-30 06:34
子程序的内部数组是不能被返回的

返回的不是数组指针吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-1 13:58:44 | 显示全部楼层
万千只cnm 发表于 2021-5-30 13:03
而且你自己编译通过了吗  
全是错误、、、、

编译通过了啊!只有数字统计为0,其他的字母符号,空格都能正确统计
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-1 14:05:51 | 显示全部楼层
今天无聊,问题找到了,把jieguo数组变量设置为静态的就行了;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-1 14:08:35 | 显示全部楼层
fastwang 发表于 2021-6-1 13:58
返回的不是数组指针吗?

子程序的返回类型是指针类型,最后一句返回的是数字名,而不是数组的元素,所以返回的结果是指向数组的第一个指针。问题找到了,是变量设置问题,吧子程序的数组变量设置为静态就解决问题了;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-21 12:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表