1.自己容易犯的错就是:printf后面老是加上一个&
2.freopen 的使用:
FILE*freopen(char*filename,char*mode,FILE*source);
作用是:
将从source读入的函数换为从filename处读入||将写入source的函数写至filename
3.stdio.h
中的fprintf\sprintf\printf三兄弟
fprintf\printf通常都可以写入(除非文件磁盘满了,fprint写入会出现问题)
sprintf则可能出现问题,其用于c-style string 固内存需求较高,最后一定自动填入'\0'的。
int sprintf(char*object,char*format,[argument]);
4.对于域宽和精度按输入要求的:
利用%*.*f,后面的参数里加上这几个*代替的变量就可以了
5.对于字符串的按行输入
建议利用fgets(char*obj,int size,stdin)代替gets(obj)//事实上读入fgets的可能只有size-1个字符,因为会自动填入\0,因为读到\n也会停止,所以称作按行输入
原因:gets(obj)有写入到未知空间的可能性,很不妙
6.浮点数的陷阱:
因为浮点数也是按照二进制存储的,所以
for(double i=0;i!=10;i+=0.1)
//死循环 因为0.1在计算机的存储方式为:1/2^4+……
7.memset
通常是给字符数组赋值的额。
因为其按照字节的单位赋值
eg. int a[5]={0};
memset(a,1,5*sizeof(int));//打算以1给a的所有元素赋值但是失败了
理由:memset是按照字节赋值的,且其形参为int型(整形提升)
给所有数组赋值0 倒是可行