GCC编译程序之后,执行时出现死循环,一次结果都不输出,大神帮忙看看什么情况

weixin_44687053 2019-04-19 08:58:52
下面附带原码:背景是在linux系统下利用GCC编写代码,调用函数时出现死循环,为了解循环死在哪里,增加了一段打印num的语句,个人觉得调用函数语句会执行两次,直到遇到3,程序进入死循环;最终程序会输出两次结果后进入死循环。但是结果进行编译的结果是直接进入了死循环,没有任何结果输出。

#include <stdio.h>

int str_fun(char *p);
int main(int argc,char *argv[])
{
char s[]="ho3llewrftridgeefvhtydv";
int n;
n=str_fun(s);

printf("n=%d\n",n);

return 0;
}
int str_fun(char *p)
{
int num=0;
while(*p !='\0'){
if(*p<='z' && *p>='a'){
num++;
printf("%d ",num);

p++;
}}
return num;

}
...全文
559 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangPC 2019-05-10
  • 打赏
  • 举报
回复
如果你再每次打印后加个sleep就可以打印出来
zhangPC 2019-05-10
  • 打赏
  • 举报
回复
你这程序遇到不在a-z范围内的字符就死循环了,p++放if判断外面
weixin_44687053 2019-04-20
  • 打赏
  • 举报
回复
我这个程序已经用指针指向了字符串,这个不影响的,如果我把字符串全部用字母,不出现数字的话,这个程序可以正常执行。
现在的问题是我已经知道我的程序为甚么死循环,在*p=3时,程序不会进入if语句里面,p++不会执行,从而出现了死循环,这个我是了解的,但是前两次的循环是正常执行了的,个人感觉会输出两次num的值,但是实际执时直接死循环,没有任何输出。
海鸥的泪眸 2019-04-19
  • 打赏
  • 举报
回复
把字符串改为全局产量

1,068

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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