C语言字符串函数
1、字符串输出函数:
puts(字符串数组名);
2、字符串输入函数:
gets(字符串数组名);
3、字符串连接函数:
strcat(字符数组1,字符数组2);
作用:把字符串2连接到字符串1后面,结果放在数组1中
4、字符串赋值函数:
strcpy(字符数组1,字符串2);
作用:把字符串2复制到字符数组2中
strncpy(字符数组1,字符串2,n);
作用:把字符串2前n个字符组成的字符串复制到字符数组1中
5、字符串比较函数:
strcmp(字符串1,字符串2);
若字符串1与字符串2相等,则函数返回0;
若字符串1大于字符串2,则函数返回正值;
若字符串1小于字符串2,则函数返回负值。
6、计算字符串长度函数:
strlen(字符串);
计算的长度把包括字符串结束标记'\0'
7、字符串大小写转换函数:
大写转小写:strlwr(字符数组名);
小写转大写:strupr(字符数组名);
结构体变量定义:
struct 结构体类型名 结构体变量名;
例:struct student stud1,stud2;
类型相同的两个变量可以直接复制
例:stud1 = stud2;
共用体:
共用体类型的所有成员变量共同用一段内存,某一时刻共用体类型中只用一个成员起作用
定义:
union 共用体类型名 共用体变量名;
例:union data u1, u2 ;
类型相同的两个变量可以直接复制
例:u1 = u2;
枚举类型定义:
enum 枚举类型名 {枚举值1,枚举值2,...,枚举值n};
例:enum weekday {sun,mon,tue,wed,thu,fri,sat};
weekday d1, d2;
#define 与 typedef 的区别
(1)原理不同
#define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错
typedef是关键字,在编译时处理,有类型检查功能。它在自己的作用域内给一个已经存在的类型一个别名,但不能在一个函数定义里面使用typedef。
(2)功能不同
typedef用来定义类型的别名,起到类型易于记忆的功能。另一个功能是定义机器无关的类型。
#define不只是可以为类型取别名,还可以定义常量、变量、编译开关等。
(3)作用域不同
#define没有作用域的限制,只要是之前预定义过的宏,在以后的程序中都可以使用,而typedef有自己的作用域。
(4)对指针的操作不同
volatile
volatile 是一个类型修饰符(type specifier).volatile的作用是作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。
当要求使用 volatile 声明的变量的值的时候,系统总是重新从它所在的内存读取数据,即使它前面的指令刚刚从该处读取过数据。而且读取的数据立刻被保存。