一、字符数组
1、一个数组的元素是字符型,该数组是字符数组
2、赋值方式:
char c[ ]={'a','b','c'} //只有三个字符
c[0]='a',c[1]='b',c[2]='c'
3、处理已知长度的字符数组
二、字符串
1、C语言没有字符串类型,所以只能以字符数组,结束标识'\0'
2、赋值方式:
char c[10]={'a','b','c'} 会自动补0
char c[]="abc" //有四个字符
c[0]='a',c[1]='b',c[2]='c',c[3]='\0'
三、字符串函数
1、strlen:获取字符成员个数,不包括\0
sizeof:返回字符串大小
#include <stdio.h> #include <stdlib.h> int main() { int a[] = { 1,2,3,4,5 }; char b[] = "123"; printf("数组a的大小%d\n", sizeof(a)); printf("数组b的大小%d\n", sizeof(b)); printf("数组a的长度%d\n", sizeof(a)/sizeof(a[0])); printf("数组b的长度%d\n", strlen(b)); system("pause"); return 0; }
2、strcpy:拷贝字符串
char a[]="" ;
char b[] = "aiyoubucuo";
3、strcat:连接字符串
char a[]="aiyou" ;
char b[] = "bucuo";
4、strcmp:比较字符串
#include <stdio.h> #include <stdlib.h> int main() { char a[]="abc" ; char b[] = "abd"; char c[] = "abc"; printf("对比结果为:%d\r\n", strcmp(a, b)); printf("对比结果为:%d\r\n", strcmp(b, a)); printf("对比结果为:%d\r\n", strcmp(a, c)); system("pause"); return 0; }
5、strlwr:大写字母转小写
6、strupr:小写字母转大写
7、fgets,获取输入内容,可以获取空格及换行,scanf不能获取
#include <stdio.h> #include <stdlib.h> int main() { char a[100]; fgets(a, sizeof(a),stdin); printf("您输入的是:%s", a); system("pause"); return 0; }
8、strstr(),strchr(),查询字符或字符串是否存在
#include <stdio.h> #include <stdlib.h> int main() { char a[]="aiou bucuo"; char *b=strchr(a,'a'); char* c = strstr(a, "aiou12"); if (c==NULL) { printf("查询失败!\n"); } else { printf("查询成功!\n"); } system("pause"); return 0; }
9、strtok(),切割函数
#include <stdio.h> #include <stdlib.h> int main() { char a[]="aiou bucuo ooo"; char b[100];//拷贝数据,strtok会破坏原字符串 strcpy(b, a); char* p; p=strtok(b," "); while (p!=NULL) { printf("切割后:%s\n", p); p = strtok(NULL, " "); } system("pause"); return 0; }
四、生成随机数
#include <stdio.h> #include <stdlib.h> int main() { //设置种子,srand里面的数据一样,生成的随机数也一样,时间一直在变,所以取时间 srand((unsigned int)time(NULL)); for (int i=1;i<10;i++) { //生成随机数 int num = rand(); printf("随机数%d:%d\n", i, num); } system("pause"); return 0; }
运行结果: