C语言常识

数据格式详解:

1.0).2^8=256 

  2^10=1024

  2^16=65536(32768)

1.1)随便写几个输出格式记着:%.3lf,%03d,%6d

2.普通计算机完成一万次循环不到0.1秒

3.进制转换只有两种情况:十进制转换为其他进制(用这个十进制数除以所求进制取余数即可),其他进制转换为十进制(此进制数拆成数字乘以进制对应的幂次方即可)。

4.12的平方是int在GCC中的极限平方了,到了13的平方就会溢出,int型数组建立10万个没事,建立100万个就创建不出了,因此在数组建立不出来时,尽量让数组放在函数之外,因为如果数组太大,放在函数内有可能会崩溃,在函数之外则不会有这样的问题。因为在函数外定义属于全局变量,全局变量在静态存储区分配内存,而局部变量是在栈上分配内存空间的,如果数组太大,可能会造成栈溢出。


输入输出函数详解:

5.scanf 函数的返回值反映的是按照指定的格式符正确读入的数据的个数。也就是说,可以运用while(scanf(“%d”,&x)==1){}来更加简化没有确定数据个数时的代码段,那么,这里只能输入字母来结束输入,在scanf中,回车,空格,tab键是无关紧要的,也就是输入多少也不会管,只有按下空格,再按Ctrl+z,然后再按回车,才算结束输入,这时候scanf接受的是第一个空格之前的字符,在Linux中,按下回车,再按下Ctrl+D即可结束输入,也就是说,scanf的这种特性基本没用,只有在ACM中有用。另外printf的添加空格功能也是非常重要的一个功能,格式为%3d

8.输入输出重定向

freopen("d:\\data_in.txt","r",stdin); 将输入定向为文件d盘下的文件data_in.txt文件

freopen("d:\\data_out.txt","w",stdout); 将输出定向到d盘下的data_out.txt目录。如果进行了输入输出重定向的话,那么scanf就应该添加\n了,如果后面没有\n的话,说实在的,它也应该不会出错的,到不是数字的时候自动停止,应该不会出错的。也就是说,即便后面是什么鬼都没关系,就这样,更方便了呢

cin>>a>>b;

count<<a<<b<<endl;

9.printf,sprintf,fprintf是三个亲兄弟,分别是输出到标准输出,字符串,文件。

11.fgetc(file)为从文件中读取一个字符,返回int型,而getchar()是从标准输入输出中获取一个字符,它等价于fgetc(stdin)

12.fgets(buff,MAXN,fin)将读取完整的一行存放到buff字符数组中,而且往往是以\n结尾(除了在文件结束前没有遇到\n这种特殊情况)。当一个字符也没有读到,函数返回null。同样有一个标准输入板的gets(s)函数,里面只有一个数组参数,风险较大,不建议使用。而在scanf中,是不包括\n的,但是也不能在接受字符串中打上\n,回车是一个输入完成键,在scanf与fgets混用时(我为什么要混用?可能以后再也不会混用了)要注意这个点。

13.在用fgets读取整段函数时,每一个段后面会有一个回车符需要减一,而最后一个段没有回车符,用一个0代替,好像也会录入,注意fgets与fscanf的不同,因为fscanf不吸收\n\r,因此交替使用时,要用scanf("...\n\r",...)吸收掉段尾标志才行。因为在文件里,没有敲回车代表完成输入的。


字符串处理函数详解:

6.数组批量复制函数memcpy,数组清零函数memset函数,类似于a[100] = {0}只能在定义时使用,它们都在string.h中,善于利用这些函数,可以不用写for循环了。

10.头文件ctype.h中定义的isalpha(判断是否为大小写字母),isdigit(是否为十进制字符),isprint(是否为可打印字符)等工具可以用来判断字符属性,而toupper(返回字符的大写形式),tolower(返回字符的小写形式)等工具可以用来转换大小写。

14.c语言中的确有字符串转int型函数,为atoi函数,在stdlib里

strlen返回字符串长度的


猜你喜欢

转载自blog.csdn.net/qq_40058642/article/details/79334487