十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
看情况你的代码是正常退出了。问题就出现在scanf上。建议你不要使用这个函数,在循环输入时使用它不行。用gets就好了 。
成都创新互联公司长期为上千多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为大庆企业提供专业的做网站、成都网站制作,大庆网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。
因为scanf在输入数只时,碰到非数值时就停下来了,回车、空格等等都是非数值。
scanf函数不接收回车符。这样回车符会在下一次循环时被接收,所以感觉被跳过了。你可以在scanf函数后面加上一句getchar函数,接收掉前面scanf未接收的回车符。
这个是本身编译软件的问题,也不算是属于BUG。那是由于上一个输入输入的函数最后判断输入完毕的回车会在这里生效,而且你写getchar函数也会一同运行,解决办法就是写两个getchar。
C语言规定程序有且只有一个主函数main(),程序是从主函数开始运行的,到主函数结束的。
如果调用函数写在主函数之后。那就要主函数声明了。
要么你短点调试,要么你代码贴上来,要么你分析一下你的代码,跟着程序分析一下过程,要么就是程序运行太快调用了你没看出来,要么就是你的程序还没有运行到第二次调用就已经结束了。。
你的主函数呢?不看你的主函数怎么知道错误在哪呢?。。
因为C语言程序是从main函数开始执行的,而不是从第一个定义的函数开始执行的,如果你的代码编程没有输入到主函数里,那么执行输出的代码就是主函数里的,后面的不会输出。
fgets( book[i].bn, 100, stdin);这种形式输入。回车换行符就会含在字符串里,输入不会读乱。读入的字符串长度等于 strlen(book[i].bn);最后一个字符是 \n把它赋成 \0 就从字符串里清除了。
C语言里的gets()函数功能是从输入缓存中读取多个字符,遇到回车符时,结束输入。
因为scanf在输入数只时,碰到非数值时就停下来了,回车、空格等等都是非数值。