摘要:
因为sprintf函数没有参数指定缓冲区的大小,这使得溢出的可能性很大,尤其是遇到sprintf( buffer, "%s", a )如果不知道a的串长,就无法指定安全的缓冲区。解决方法:如果要用sprintf处理, 应该提前获取串a的长度len_a,然后动态申请len_a + 1大小的内存。 这样... 阅读全文
摘要:
辗转求余法: gcd( M, N ) = if M % N == 0 return N else M % N = R, R > 0 return gcd( M, N ) 阅读全文
摘要:
公式: a¡+1 = ( a¡ + n / a¡) / 2介绍: ai : 上一个精度的数 a¡+1 : 下一个精度的数 n : 待计算的数注释: 这个方法可以获得越来越精确的数值 阅读全文
摘要:
问题描述 我想写个能够排序多种类型的函数. 当我着手排序字符串时, 发现直接把strcmp传递给qsort后, 无法正常排序。解决方法 我注意到strcmp的参数与快排第4个参数的形参并不一致。 我便自己写了个比较函数, 问题solved!附上 1 /* 2 ** 比较两个字符串 3 ... 阅读全文
摘要:
在编写代码时,如果写太多行,很多我平时觉得显而易见的问题变得非常不明显。 比如, 经常把关系符号 == 写成 赋值符 =。 结果调试多遍还以为是编译器坏了。这是我曾写的1 else if( sscanf( buffer, "修改 %d 更改 %s %s %1s", &record_numbe... 阅读全文
摘要:
1.公式: 位数 = (int)lg10(A) + 1。2. 推导: A 代表某个整数. 这里只考虑正整数(负整数规律一样)。 10^(x-1) = x - 1 lg10(A) + 1 >= x (int)lg10(A)+ 1 = x; A的位数便求出来了! 阅读全文
摘要:
我刚才写了个程序, 需要操作两个文件。 我用fgets获取标准输入流stdin中的文件名, 然后用fopen打开。 结果编译器总是抱错。 调试了一下,发现fopen返回的是NULL。我在此处加了个ferror, 系统提示 无效的参数。 我首先排出了第二个参数,那就是第一个参数出现了问题。 我检查... 阅读全文
摘要:
需要用到反斜杠,我习惯地写成'\', 结果编译器总是给我一些不好的反馈。。。 查了查资料, 反斜杠应该是'\\'。 为什么? 因为单个的它是转义符, 它腐蚀掉后面的', 造成编译的ERROR。 顺便补充以下转义字符.转义字符意义ASCII码值(十进制)\a响铃(BEL)007\b退格(BS... 阅读全文
摘要:
在学习函数指针, 我遇到了问题, 我定义一个指针指向负责打印参数的函数, 1 void (*p)( int ) = Fun;好奇该指针存放的是什么(原以为是函数的入口地址),便调试观察一下他们的内存, Fun的值是函数入口地址 0x00401030 Fun(int), 而p的值是函数指针存放... 阅读全文
摘要:
栈内存初始值0xcccccccc和-858993460。 二者是一样的, 一个是16进制, 另一个是10进制 阅读全文