21ic电子技术开发论坛 单片机与嵌入式系统 ST MCU 6个超级好用的C语言小技巧
发新帖我要提问
返回列表
打印
[应用相关]

6个超级好用的C语言小技巧

[复制链接]
2189|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huangfeng33|  楼主 | 2012-10-5 21:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
C语言小技巧大功效,这里讲述了6个超级好用的小技巧,可大大优化编程内容,用库函数简化程序到极点!

1、减少不必要的BAK文件


当使用TC默认配置时,会产生大量的*.bak文件。因为按照TC默认设置,修改某个C文件后,将生成同名的*.bak备份文件,该类文件的存在没多大作用。解决办法是把Options->Environment->Backup files设置为off。


2、优化设置使编译的文件更小

如果你使用的是TC默认的配置话,那么,你所编译的文件还可以进一步缩小。方法是把Options->Complier->Optimization下第3、4项也设置为on。


3、使用Windows98自带的Pdos95

当要使用中文系统时,其实不必要为了使用中文而去下载中文系统。只要是典型安装,用Win98自带的Pdos95系统足矣。建立一快捷方式,命令行只需一句:C:\COMMAND.COM /k C:\windows\command\pdos95.bat,然后还可以将工作目录设置为TC目录,那么进入中文系统后只需键入TC即可启动TC。而且,Pdos95还自带了四种输入法(国标、区位、双拼、拼音),使用Shift+Ctrl切换,极为好用。


4、在Windows下编写C代码

我们一般是在TC界面下编写C代码的。其实,在Windows下编写C代码,不仅可以充分利用Windows的剪切、复制、粘贴功能,而且可以直接输入汉字。方法是:按住Shift键在任意一C文件上击鼠标右键,在弹出菜单中选择"打开方式...",然后在程序列标中选择NOTEPAD,同时将"始终使用该程序打开这种类型的文件"项打钩。按"确定",以后双击*.c文件即可直接用记事本编辑。使用该方式,注意打开用TC编辑过的文件时,先要去掉文本末尾的C文本结束符(表现为一实心矩形),否则在TC重新读取文本时,你的添加工作将会前功尽弃。


5、使用库函数优化代码之N进制转换

刚学习编程的朋友都遇到过进制转换的问题,一般的要将一个十进制的数转化为N进制输出,常规解法是循环取余的方法。其实这类问题若是用C的库函数解决则可简化到极点:

使用char *itoa(int value,char *string,int radix)。

radix值是要转化的进制数,string是转化后的字符串的存放指针。譬如10进制转化为3进制输出可以这样写代码:(TC2.0版)
main()
{
int value;char s[20];
puts("input value:");
scanf("%d",&value);
itoa(value,s,3);/*3进制转换*/
printf("result is:%s\n",s);/*输出结果*/
}
看,进制转换是不是非常简单了?


6、使用库函数优化代码之字符串操作

学习指针时,一般要练习自己去写如字符串大小转换,一字符串在另一字符串中的位置的函数。而在实际运用中,库函数可以很好地解决这类问题。例如:
字符串内所有字符转大写:
char *strupr(char *s);
字符串内所有字符转小写:
char *strlwr(char *s);
s2子串第一次出现在s1中的位置:
char *strstr(const char *s1,const char *s2)然后用查找串指针-查找后返回指针得到具体位置。如:
main()
{ char s1[10]="c:\\tc\\tc.exe";
 int position;
 position=(int)s1-(int)strstr(s1,".exe");/*相减得具体位置*/
}
这只是例举的几个小的方面,如果
能灵活运用字符串库函数则诸如目
录提取、扩展名判断和字符串查找
则变得非常简单。

7、使用位段类型快速进行位分解

一般我们进行位分解使用的是循环位移再位与运算的方法来进行的,这种方**对原数据进行破坏,而如果要保存原数据则要多占用几个数据单元。其实有一种更好、更快的解决办法,那就是:用位段数据类型进行分解。将struct和union类型结合使用,即发挥了指针运算的高效,又保护了原始数据不被破坏。具体实现方法如下:
typedef union/*8位位段分解类型*/
{char value;
struct
{unsigned b0:1;
unsigned b1:1;
unsigned b2:1;
unsigned b3:1;
unsigned b4:1;
unsigned b5:1;
unsigned b6:1;
unsigned b7:1;
}bits;
}
bits8;
这样,用该结构来保存数据,即可以用.value来保存和访问数据,又可以用.b0、.b1...来访问第1、2...等位,非常方便。读者还可以仿造该结构定义16位位段分解类型
沙发
mcuisp| | 2012-10-6 08:49 | 只看该作者
这、、、、也太老的“技巧”了???!!!

不好的技巧,有误导效果

使用特权

评论回复
板凳
blowlow| | 2012-10-6 13:16 | 只看该作者
这都啥年代了,还TC的。 不知道TC能在win7下跑起来不?

使用特权

评论回复
地板
nongfuxu| | 2012-10-6 19:22 | 只看该作者
路过,3人行有我师。

使用特权

评论回复
5
mgarm| | 2012-10-6 20:54 | 只看该作者
很基础,不算技巧

使用特权

评论回复
6
tianli1980| | 2012-10-7 14:32 | 只看该作者
:)非常适合我们这些初学者,感谢楼主的分享。顶一个,楼上都是主高人啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

506

主题

2446

帖子

8

粉丝
快速回复 在线客服 返回列表 返回顶部