![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言技巧集锦
文章平均质量分 60
megaboy
这个作者很懒,什么都没留下…
展开
-
标准输入输出函数%[]和%n说明符的使用方法
标准输入输出函数scanf具有相对较多的转换说明符,它常常作为入门级函数出现在各种教材中。但奇怪的是,[]和n这两种都为c89/c99所规定的标准说明符却鲜少在大多数教材中出现。虽然[]和n说明符的使用频率不及其它说明符,但两者在程序设计中的作用仍然不可小视,尤其是[]说明符。 众所周之,scanf以空白字符为定界符,但如果输入的字符串是以其它字符为定界符的,那怎么办原创 2005-10-23 22:55:00 · 5937 阅读 · 1 评论 -
单双精度浮点数的IEEE标准格式
目前大多数高级语言(包括C)都按照IEEE-754标准来规定浮点数的存储格式,IEEE754规定,单精度浮点数用4字节存储,双精度浮点数用8字节存储,分为三个部分:符号位、阶和尾数。阶即指数,尾数即有效小数位数。单精度格式阶占8位,尾数占24位,符号位1位,双精度则为11为阶,53位尾数和1位符号位,如下图所示:单精度浮点数存储格式 s指数 尾数原创 2005-10-23 22:45:00 · 4119 阅读 · 1 评论 -
不定长字符串输入处理小技巧
大家在编程的过程中,经常会遇到需要输入一个不定长字符串的情况。通常来说,解决这个问题可以有两种方法: 一是先分配一个固定长度的缓冲区,把输入的字符串先存储到这个缓冲区,然后再根据其长度动态分配内存。这个方法缺点是无论分配多大的缓冲区,都无法完全满足要求。太大浪费内存,太小会发生字符串截断。 二是逐个字符输入,然后通过realloc函数来实时改变缓冲区的大原创 2005-10-23 22:49:00 · 4503 阅读 · 5 评论 -
如何高效产生m个n范围内的不重复随机数(m<=n)
如何产生不重复的随机数?最容易想到的方法,是逐个产生这些随机数,每产生一个,都跟前面的随机数比较,如果重复,就重新产生。这是个很笨的方法,且比较次数呈线性增长,越往后次数越多。其实这些比较是多余的,完全可以不进行比较,只要反过来,按顺序产生这些数,但随机产生它们的位置。例如下面产生100个100以内不重复随机数的代码:int a[100];for(i=0; ifor(i=99; i原创 2005-11-07 08:09:00 · 8423 阅读 · 18 评论 -
ASCII码0x1A使文件意外结束的处理方法
在windows操作系统中,大家在编写带有文件操作的程序时,有时候会遇到一种奇怪的现象,在对一个文件以文本方式进行读取的过程中,读到中途还没到文件末尾时feof()函数就意外地为真,这让人很惊讶,一时难以找到原因,实际上,这是ASCII码0x1A在作怪。运行下面程序:int main(void){ int i; unsigned char c;原创 2005-11-20 12:44:00 · 7514 阅读 · 12 评论