易码技术论坛

 找回密码
 加入易码
搜索
查看: 653369|回复: 27

[源码] [原创写了个C的字符串格式输入程序

[复制链接]
发表于 2006-5-4 11:57:00 | 显示全部楼层
两点建议^_^

1、帖子发代码最好使用[code ][/code ]标签……不过动网的标签很垃圾。还得把里面牵扯到[ i]的文本加上一个空格,否则就解析成斜体的的UBB代码了。

2、在c程序中不要用goto,除非是遇到很深的一个循环嵌套需要直接跳到外面。否则的话,你的代码将很让人费解……goto应该成为历史……

嘿嘿~~加油,c语言很有趣的~
 楼主| 发表于 2006-5-4 17:26:00 | 显示全部楼层
好的,谢谢大哥的建议

继续修炼
发表于 2006-5-7 08:07:00 | 显示全部楼层
以下是引用FantasyDR在2006-5-4 11:57:00的发言:[BR]两点建议^_^

2、在c程序中不要用goto,除非是遇到很深的一个循环嵌套需要直接跳到外面。否则的话,你的代码将很让人费解……goto应该成为历史……


我不很同意哦,有两层嵌套的时候就该考虑goto了,否则还要加其他的标志型变量,而且,goto用起来运行效率很高,而且在LavaX里,goto远比while和for的空循环来的好(省了至少6字节的代码)。
发表于 2006-5-7 21:44:00 | 显示全部楼层
这个,代码不仅要考虑其运行效率;也要考虑可读性和可维护性.

goto用的多了,看代码的人就该郁闷了.
发表于 2006-5-13 18:00:00 | 显示全部楼层
goto有什么不好啊,虽然降低了一点可读性,效率却提高了,或者加上一点注解同样可以祢补可读性的问题。[em03]
发表于 2006-5-20 21:31:00 | 显示全部楼层
if(key==0x0d)
是什么意四
 楼主| 发表于 2006-5-21 13:24:00 | 显示全部楼层
当键值为0X0D,也就是回车的时候
发表于 2006-5-21 20:44:00 | 显示全部楼层
将程序模块化应该能解决一些goto问题

用inline

一些短小的循环~ 用一下goto没关系,如果整个模块非常大 就不要用goto了  极其影响阅读并且还容易出错



其实如果真是很深很深的循环 或是很大很复杂的循环,尽量用其他方法来解决 而不是goto

否则看这种代码会让人崩溃...

如果遇到这种问题(虽然我不知道最好的方法是什么)

可以常识把他们清晰的划分成几个模块 包含在一个名字空间里

用inline

类似:



  1. while(1){

  2. while(/*...*/){

  3. //这里也就几行程序

  4. goto xxx;

  5. }

  6. //少量代码

  7. }

  8. xxx:

  9. //其他

复制代码


如果没有其他办法了

可以尝试在各循环的大括号处增加注释 注明是第几层循环 或是代号为什么的循环

以免混乱,不过我认为把他们划分成更细小的模块来用比这么做更好
发表于 2006-5-24 10:32:00 | 显示全部楼层
以下是引用laugj在2006-5-21 20:44:00的发言:[BR]将程序模块化应该能解决一些goto问题

用inline

一些短小的循环~ 用一下goto没关系,如果整个模块非常大 就不要用goto了  极其影响阅读并且还容易出错


其实如果真是很深很深的循环 或是很大很复杂的循环,尽量用其他方法来解决 而不是goto

否则看这种代码会让人崩溃...

如果遇到这种问题(虽然我不知道最好的方法是什么)

可以常识把他们清晰的划分成几个模块 包含在一个名字空间里

用inline

……


你的概念有点混乱。命名空间不是c的概念,是c++的概念,inline也是。如果是c程序,那么不可以使用命名空间和inline的。

短小的循环用break就可解决问题,短小的循环更不应该出现goto。

当然没有强迫的规定~~只是比较流行的用法而已。而且实际经验也证明,goto是一种编译器和coder自己看着爽,其他人都会看郁闷的东西。
发表于 2006-5-24 10:37:00 | 显示全部楼层
在C中从2重以上的循环里直接跳出来是非常方便的。而且很安全。

在BASIC中从2重以上的循环里直接跳出来很危险,会造成堆栈不平衡。

这是因为两种语言实现循环的方法不同。

LavaX的goto也是安全的goto。
发表于 2006-5-24 10:54:00 | 显示全部楼层
goto还不仅仅用于跳出多重循环。

在某些地方,可以用goto代替递归,非常方便有效。
发表于 2006-5-24 11:54:00 | 显示全部楼层
用goto代替递归……就是你goto来,我再goto回去?
发表于 2006-5-24 11:59:00 | 显示全部楼层
用数组模拟压栈,实现递归。

做编译器这种高级工具软件,可以说无处不递归。
发表于 2006-5-24 12:34:00 | 显示全部楼层
果然……goto来goto去……
发表于 2006-5-24 13:05:00 | 显示全部楼层
单从语言角度来讲,还是JAVA比较优雅,没有goto,但其中的break和continue,finally可以实现所有goto的优点.

没有C++中烦人的多继承,而且是单根继承...总之用JAVA写代码舒服,看起来也简洁.
发表于 2006-5-24 13:38:00 | 显示全部楼层
单从语言角度来讲,优雅的是PASCAL,而优雅的恰恰也是最不实用的。
发表于 2006-5-24 15:41:00 | 显示全部楼层
Java是完全OO的,c++不是完全的OO,大概有这个原因吧~~不过c++是真正的自由,个人很喜欢这一点。

另,从木有觉得Pascal优雅过,大概“优雅”的定义不一样。

貌似帖子跑题很远了……-.-
发表于 2006-5-24 15:41:00 | 显示全部楼层
Java是完全OO的,c++不是完全的OO,大概有这个原因吧~~不过c++是真正的自由,个人很喜欢这一点。

另,从木有觉得Pascal优雅过,大概“优雅”的定义不一样。

貌似帖子跑题很远了……-.-
发表于 2006-5-24 16:06:00 | 显示全部楼层
优雅就是只能远观而不得亵玩的东西,象高雅艺术一样,没有实用性。

说一种语言优雅,其实也就是为这种语言判了死刑,它只能出现在课堂上。
发表于 2006-5-24 16:17:00 | 显示全部楼层
不认同楼上的这种逻辑.

编程语言从最初的机器语言到汇编到C...乃至现在的Java,c#.发展的趋势是让让语言变得越来越好用,越来越人性化.毕竟语言也是为人服务的,最终还是要以人为本.

虽然语言的优雅会让它丧失一些东西,比如速度之类的,但这些有其它途径可以解决,比如CPU速度的提升.就象10年前大家都说JAVA慢,但现在很少有人这么说了,虽然它确实比C++慢.

呵呵,确实扯远了~
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2025-8-24 12:41 , Processed in 0.012569 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表