我这个程序为什么没有返回值?

别开枪是我! 2020-01-05 09:00:51
c语言求一个字符串里有多少字母的
...全文
46 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
源代码大师 2021-05-06
  • 打赏
  • 举报
回复
希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10768339.html
别开枪是我! 2020-01-05
  • 打赏
  • 举报
回复
引用 3 楼 寻开心 的回复:
这样无论你输入几个字符(不超过19个, 因为字符串结束标记0也要占数组一个位置; 超过19个会让数组容纳不下而溢出)
然后回车, 就可以调用你的计数程序了
之前的一个一个字符的输入方法下,即便你输入了20个字符, 计数函数里面的循环也会因为数组里面没有0,所以循环会跑出数组外面继续循环,也会造成破坏性的后果。
谢谢
别开枪是我! 2020-01-05
  • 打赏
  • 举报
回复
谢谢谢谢谢谢大佬
寻开心 2020-01-05
  • 打赏
  • 举报
回复
这样无论你输入几个字符(不超过19个, 因为字符串结束标记0也要占数组一个位置; 超过19个会让数组容纳不下而溢出)
然后回车, 就可以调用你的计数程序了
之前的一个一个字符的输入方法下,即便你输入了20个字符, 计数函数里面的循环也会因为数组里面没有0,所以循环会跑出数组外面继续循环,也会造成破坏性的后果。
寻开心 2020-01-05
  • 打赏
  • 举报
回复
你这个程序强制要求输入20个字符, 没有返回值恐怕是你一直没有输入够20个字符
改成字符串输入,不要for循环
scanf(“%s”, a);
这样就可以了
棉猴 2020-01-05
  • 打赏
  • 举报
回复
代码应该没问题
#include<stdio.h>
#include <string.h>
int countlets(char str[]);
int main()
{

char a[20];
int i;
printf("input a string:\n");
for (i = 0; i < 20; i++)
{
scanf("%c", &a[i]);
}
printf("%d", countlets(a));
return 0;
}

int countlets(char a[])
{
int i;
int n = 0;
for (i = 0; a[i]; i++)
{
if ((a[i] >= 65 && a[i] <= 90) || (a[i] >= 97 && a[i] <= 122))
{
n++;
}
}
return n;
}

VS2015 C++环境调试
自信男孩 2020-01-05
  • 打赏
  • 举报
回复
楼主的字符数组并不是以'\0'结束的,因此不能成为字符串。而自定义函数里却要判断是不是'\0',因此程序不能正常结束

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧