经过了一晚上的努力,终于把这个工具做的能看了。。
早上的版本只是基本功能罢了。
这次的改进版提供了手动输入和从文件导入两种输入方式。
能够自定义Ping的次数。
同时,将各个功能模块化,代码量也变大了好多。。
总之,这个Ping工具就这样了。
而且,在写这个小工具的时候,发现了自己在编程方面的很大不足,同时也发现了几个编程的小陷阱。
1)scanf函数的换行符问题。在scanf()
读取完之后,会留下一个换行符\n
。这就会导致一个问题,我成为“换行符污染”。简而言之,就是会多出换行符导致下一次读取输入的时候因多余的换行符而提前终止。解决办法就是在每个scanf()
之后,添加一行while(getchar()!='\n');
。
2)gets()函数的安全问题。gcc已经不推荐使用这个函数了。而且,这个函数非常容易造成输入溢出,非常不安全。那么,我们可以用fgets()
函数来代替它。其中,输入源填写为stdin
就可以做到从屏幕输入了。在这里,也不推荐使用gets_s()
这个微软自家的所谓的安全函数。因为不是标准,所以可能会造成某些移植上的问题。
3)从屏幕读取字符串的换行符问题。在使用fgets()
等函数的时候,不像scanf()
会遗留一个换行符'\n'
,但是,却会在我们不需要的时候,在读入的字符串中留下一个换行符。这样可能造成的问题有:fopen()
函数在用这个字符串当路径的时候会因为换行符出错。strcmp()
函数在比较的时候,很可能因为一个多余的换行符而输出一个错误的结果。还有很多很多。。。二解决这个问题的方法有:str[strlen(str)-1]='\0'
就是提前将换行符换成'\0'
。
暂时能想到的就这些了。
至于源码嘛,木有。