C语言学习001-前言

119 阅读4分钟

1、用vs创建项目控制台项目和窗口项目,项目属性中的-连接器-系统-子系统不同,控制台项目选择 控制台, 窗口项目选择窗口,选择不对,无法运行的。

2、控制台项目运行后会弹出cmd的窗口,为了查看效果,可以在代码中添加 system("pause")暂定来查看,这个需要引入头文件 stdlib.h头文件,printf打印函数需要引入头文件 stdio.h头文件。

3、创建console项目的时候,选择空项目,否则会自带很多的头文件,

4、stdafx.h包含了stdio.h头文件,stdafx.h仅适用于mfc程序

5、#include <头文件> 使用c语言库需要提前包含头文件,printf就是stdio.h头文件中的,

5、#include<>和#include ""的区别:<>先从系统目录查找,再到用户目录查找,而""相反,先从用户目录 查找,再到系统目录查找。

6、C中的字符串和字符数组:C中没有String字符串类型,只能通过字符数组表示字符串的。但是char数组未必是字符串,以数字0,也就是字符'\0'结尾的字符数组才是字符串,不是字符'0',是字符'\0',否则只是不同的字符数字。而且字符是单引号括起来的。

定义数组 :
char name[] = {'a','b','\0'};
char name[] = "字符串";这里不用'\0'结尾;
char name[长度] = {初始化的字符长度小于前面的长度},这样自动给后面补充上'\0'了。

记住:如果字符数组不是以'\0'结尾的,printf的时候有乱码。

不指定长度,需要最后一个明确是'\0',指定长度,字符的个数要小于长度。

如果初始化的字符数组中有'\0'或者 字符串中有'\0',比如 {'a','\0','b'} 和"a\0b"
这种情况下,字符串也只会截取'\0'前面的部分了。直接把'\0'当做结尾了。当然如果'\0'后面紧接着其他字符有可能造成其他的转义字符,不会截断。 比如 \012是\n换行符。

注意;虽然作为字符串会自动截断,但是字符还是原来的字符,比如{'a','\0','b'} 作为字符串输出是"a", 但是字符数组不会变。

【注意】:定义字符串字符数组的时候,要么直接初始化,要么不初始化就要指定长度,要么指定长度并且初始化,不能只有一个没有长度的声明。 char ss[]是不允许的。

输出输入函数的用法:

7、printf函数用法:
正确的用法是printf("格式化字符串",参数列表),默认只有直接输出字符数组的时候不用前面的格式,其他的输出数字,单个字符等都必须要格式:比如 printf("%s,%d",ss,a) 其中ss是字符串,a是数字。
%d 输出数字(十进制带符号,正号省略)
%u 十进制无符号
%s 输出字符串
%c 输出字符 %f 以小数形式输出单双精度
%p 输出指针地址

字符可以按照%d数字的个数输出,比如字符'a'的数字是97 ,经过了转换

数字也可以按照字符个数输出:65 按照%c输出的是字符'A'

8、从控制台读取字符串: scanf函数等

scanf("%s",cha数组) 注意如果输入的字符串中有空格,截取。空格后面的不会读取进来。

gets(字符数组) 不会因为空格截断。

fgets(字符数组,长度,stdin) 长度是小于等于sizeof(数组)的 这样就能输入长度-1个字符了,最后一个字符应该是'\0',这样就不会出现溢出的问题了。

输出函数:printf(字符串) 需要手动在字符串末尾加上\n才能换行,
puts默认自动在末尾输出结束后换行了。
fputs 是puts的文件版本要输入到屏幕写成 fputs("字符串",stdout);

字符串的长度 string.h中的strlen()函数 strlen(字符数组),只输出字符串长度,\0截取的不算的。