求教这段代码问题出在哪里?
本帖最后由 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;
} 你传进来的是指针 要解引用才是里面元素呀
if((strs>='a' && strs) || (strs>='A' && strs<='Z'))
而且你遍历的话 指针也要++ 呀
感觉你很多不懂
万千只cnm 发表于 2021-5-29 23:57
你传进来的是指针 要解引用才是里面元素呀
而且你遍历的话 指针也要++ 呀
初学者,问题是我判断数字的时候是进去了的,都能打印文字,但是后面代码jieguo++; 没有执行; fastwang 发表于 2021-5-30 00:15
初学者,问题是我判断数字的时候是进去了的,都能打印文字,但是后面代码jieguo++; 没有执行;
子程序的内部数组是不能被返回的 而且你自己编译通过了吗
全是错误、、、、 wp231957 发表于 2021-5-30 06:34
子程序的内部数组是不能被返回的
返回的不是数组指针吗? 万千只cnm 发表于 2021-5-30 13:03
而且你自己编译通过了吗
全是错误、、、、
编译通过了啊!只有数字统计为0,其他的字母符号,空格都能正确统计 今天无聊,问题找到了,把jieguo数组变量设置为静态的就行了; fastwang 发表于 2021-6-1 13:58
返回的不是数组指针吗?
子程序的返回类型是指针类型,最后一句返回的是数字名,而不是数组的元素,所以返回的结果是指向数组的第一个指针。问题找到了,是变量设置问题,吧子程序的数组变量设置为静态就解决问题了;
页:
[1]