详见微软技术资源库 (http://msdn.microsoft.com/zh-cn/library/dwhawy9k.aspx#example)
文件读写最常用的函数
- 字符读写函数: fgetc 和 fputc
- 字符串读写函数: fgets 和 fputs
- 数据块读写函数: fread 和 fwrite
- 格式化读写函数: fscanf 和 fprintf
以上函数都要求包含 stdio.h
文件定位
rewind(文件指针); //把文件内部的位置指针移到文件首部;
fseek(文件指针,位移量,起始点); //用于移动文件内部位置指针;
feof(文件指针); //判断文件是否处于文件结束位置,如文件结束,则返回值为1,否则返回0;
ferror(文件指针); //检查文件在用各种输入输出函数进行读写时是否出错。如ferror返回值为0表示正常,否则表示有错
clearerr(文件指针); //本函数用于清除出错标志和文件结束标志,使它们为0;
位运算符
& 与
| 或
^ 异或
~ 取反
<< 左移
>> 右移
位域 (http://baike.baidu.com/view/1256879.htm) -------个人感觉用到的地方不多
printf函数
scanf函数
for 注意事项
数组
在数组名作为函数参数时所进行的传送只是地址的传送,也就是说把实参数组的首地址赋予形参数组名。
形参数组名取得该首地址之后,也就等于有了实在的数组。(此时形参数组中值的变化会导致实参数值中值的变化)
---------------------------------------------------------------------------------------------------
关于被调函数的说明
如果被调函数的返回值是整型或字符型时,可以不对被调函数做说明,直接调用。
这时系统将自动对被调函数返回值按整型处理。
register变量
为了提高效率,C语言允许将局部变量的值防砸iCPU中的寄存器中,这种变量叫“寄存器变量”,用关键字register作声明。
由于受硬件寄存器长度的限制,所以寄存器变量只能是char、int或指针型。
寄存器说明符只能用于说明函数中的变量和函数中的形参,因此不允许将外部变量或静态变量说明为"register"。
register型变量常用于作为循环控制变量,这是使用它的高速特点的最佳场合。比较下面两个程序的运算速度。
int fac(int n)
{
register int i,f=1;
for(i=1;i<=n;i++)
f=f*i
return(f);
}
main()
{
int i;
for(i=0;i<=5;i++)
printf("%d!=%d\n",i,fac(i));
}
说明:
1)只有局部自动变量和形式参数可以作为寄存器变量;
2)一个计算机系统中的寄存器数目有限,不能定义任意多个寄存器变量;
3)局部静态变量不能定义为寄存器变量。
#ifdef
static#ifdef 标识符
程序段1
#else
程序段2
#endif
它的作用是:当标识符已经被定义过(一般是用#define命令定义),则对程序段1进行编译,否则编译程序段2。
4)它始终驻留在全局数据区,直到程序运行结束。但其作用域为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束;