当前位置:首页 > TAG信息列表 > c语言有错误找不到怎么办C语言本身没有输入输出?

c语言有错误找不到怎么办C语言本身没有输入输出?

c语言有错误找不到怎么办 C语言本身没有输入输出?

c语言本身没有输入输出?

c语言本身不提供输入输出语句,输入输出的操作都是通过函数来实现的。c语言的标准函数库提供了一些输入输出函数,比如printf函数,scanf函数。但是printf和scanf函数不是c语言的关键字,而是函数的名字,不要误认为"输入输出语句由c语言提供。

把句子翻译成二进制指令是在编译阶段完成的,没有输入或输出句子,可以避免在编译阶段处理硬件相关的问题。

这样,编译系统可以简化,具有通用性,适用于各种计算机。扩展数据1、在输入流中,数据项必须用空格、制表符和换行符分隔。

c语言有错误找不到怎么办 C语言本身没有输入输出?

逗号和分号不是分隔符,例如下面的代码:

scanf(#34%d%d#34,ampr,ampc)会接受10^20的输入,但是遇到1020就会失败。()函数是一个打印格式函数,一般用于将信息以指定的格式输出到标准输出设备。写程序的时候经常用到这个函数。函数的原型是:intprintf(constchar*format,...)函数的返回值是整数。如果成功,则返回输出的字符数,如果输出不正确,则返回负值。

c语言程序开发中,难免会出现逻辑错误,怎样让程序自己输出错误位置呢?

谢谢邀请我。

在c语言程序的开发中,程序员经常把一个复杂的任务分成几个简单的子模块,这些子模块可以看作是复杂任务的各个组成部分。所以程序员可以像"积木"来解决复杂的任务。

这样做的原因是,如果您直接编写c语言代码来一次性解决复杂的任务,往往会使整个代码"皱巴巴的",不仅开发时容易引入bug,后期维护起来也更痛苦。试想一下,如果把任务分成几个子模块,以后发现问题可能只需要修改一个子模块。但是如果你不这样做。;不要这样做,你必须从所有的代码开始寻找并解决问题。哪种开发风格便于维护,相信题主自然明白。

任务被分成子模块后,每个子模块往往被封装成一个c语言函数,所以最后的"堆积木材和木材;"实际上是调用每个c语言函数。但每个子模块都可能得到正常结果或异常结果,通常用c语言函数的返回值来区分。当调用"堆积木材和木材;"阶段,要根据被调用函数的返回值做不同的处理。

例如,当一个子模块负责计算用户输入的数字的log(对数)值时,如果用户输入一个正数,该子模块可以得到一个正常的结果。但如果用户输入的是负数,子模块显然无法得到正常的结果。

这里这是一个例子。示例c语言代码尽可能简单,以便集中讨论主题:

cond()函数产生一个从0到10的随机数。如果随机数小于5,则返回-1(模拟异常结果),否则返回0(模拟正常结果)。fun1()函数和fun2()函数都会根据cond()函数的返回值做一些进一步的工作(上面的c语言代码跳过"进一步的工作和).在main()函数中,当"堆积木材和木材;"调用fun1()和fun2()函数,它用一个if语句判断它们的返回值,并根据返回值做出不同的处理。

现在编译这个c语言程序并执行它,得到如下结果:

从输出结果中,我们可以发现c语言程序输出"cond是假的(模拟异常)。我们经常不t不想让程序输出异常结果,所以在看到异常结果后,我们需要知道为什么会出现这个结果。

适当的输出信息有助于定位异常和检查c语言的源代码。发现程序输出的异常结果是由于if(!fun1()ampamp!fun2())为假,但无论fun1()还是fun2()返回-1,if条件表达式都会为假。在这种情况下,main()函数调用fun1()和fun2()函数是不合适的,因为我们可以这里不继续跟踪异常的原因。似乎main()函数更合适。相关的c语言代码如下。请看:

编译并执行修改后的c语言代码,得到如下结果:

这一次,我们知道哪个函数导致了异常输出,但是它写这么多行代码太麻烦了,只调用两个函数可能都用不到。如果其他地方需要类似的,it这就更麻烦了。有没有更方便的方法?我们尝试将错误消息插入fun1()和fun2()函数,并将fun1()和fun2()函数的代码修改如下:

现在在修改前使用main()函数如下:

编译执行这段c语言代码并执行,得到如下输出:

这样,我们不仅可以从输出中推断出是哪个函数导致了异常,还可以保持c语言代码尽可能的简单。但是代码还是有点罗嗦:

这两个句子的输出只有fun1和fun2不一样,但是我们需要把几乎同一个句子完整的写两遍,万一以后需要修改,两个地方都要修改,比较麻烦,容易出错。这种情况可以避免吗?

使用__function__、__line__、__file__等关键字在c语言程序的编译阶段,编译器会__function__。关键字__line__和__file__被解释为"函数名和,"行号"和"文件名"。所以有了这些关键词,我们就不不需要手动输入函数名。对于本节中提到的例子,我们可以完全使用上一节中介绍的define宏定义:

编译并执行这段c语言代码,得到如下结果:

可以看到,程序不仅输出了异常的函数名,还输出了函数所在的文件名(t.c)和行号(lin:26,lin:41)。这些调试信息看起来很舒服,在大型项目开发中非常实用。

类似的调试宏包括时间,日期等等,所以我赢了不要一一演示。

小结本节讨论在c语言程序的开发中,复杂的任务往往被分成多个子模块,打包成函数,这些子模块可能有正常的处理结果,也可能有异常的处理结果。所以本节讨论了输出基本调试信息对于定位问题的重要性,最后介绍了c语言程序开发中常用的几个调试宏,在大型项目开发中非常实用。

欢迎在评论区一起讨论提问。这些文章都是手工原创的。每天都有最简单的c语言、linux等嵌入式开发介绍。如果你喜欢我的文章,请关注一波。你可以看到最新的更新和以前的文章。

函数程序语言代码


鑫彬号 天和文化

  • 关注微信关注微信

猜你喜欢

热门标签

iQOO怎么重置网络 虚拟机的系统可以还原到主机吗介绍 手机微信铃声怎样设置 计算机网络与应用 手机上如何编程c语言 什么软件可以修掉多余的头发 路径绘制的技巧有哪些 夜神模拟器 iphone开热点总是自动断开 小米指纹识别不灵敏是怎么回事小米指纹识别问题 手机Wps怎么设置默认 我加了商家的微信怎么删除好友如何用微信二维码个人收款与向商户付款?介绍 微信零钱支付年限额怎么解除 win10系统如何更改硬盘分配电脑怎么重新分配磁盘空间? cad怎么转换低版本 163邮箱官网注册 苹果手机如何查看已连接wifi密码iphone怎么才能搜到中文名字的wifi? ps怎么自定义图案用PS怎么改图的名字?介绍 word中打字后面的字自动消失word输入字后相继的字消失?介绍 怎样才能远程操控他人电脑5?怎么用远程控制控制一台电脑另一个账户? ppt里面的东西怎么删除文本框PPT插入的公式文本框怎么去除? 华为6手环功能 安卓手机花椒怎么删除花椒直播怎样可以播放电脑桌面? miui相册怎么把最新的放在最下面小米10手机如何把相册照片发送到桌面?介绍 vivoy31s手机充电显示什么vivoy81s和vivoy31s的充电口一样吗?介绍 拼多多店铺开好了该怎么铺货新店刚开怎么就限制推广? appstore无法准确搜索苹果下载软件一直是灰色的点击无反应怎么回事?介绍 怎么样让建好的模型弯曲3Dmax如何做弯曲? 拆卸组装电脑的详细步骤组装电脑手工费100元贵吗? 怎样修改默认的浏览器怎么取消默认浏览器?

微信公众号