如果数组大小较大(大概10610^6106级别),需要将其定义在主函数外。(函数内部申请的局部变量来自系统栈,而函数外部申请的全局变量来自静态存储区)
memset
使用memset
为数组赋相同值。需要添加string.h
头文件。只建议初学者使用该函数赋0和-1。如果要赋其他值可使用fill
函数。
memset(数组名, 值, sizeof(数组名));
字符数组
初始化
char str[15] = {'G', 'o', 'o', 'd', ' ', 's', 't', 'o', 'r', 'y', '!' };
char str[15] = "Good Story!";
char *str = "Good Story!";
输入
函数名 | 格式 | 数量 | 识别空格 | 识别换行 |
---|---|---|---|---|
scanf | %c | 字符 | 是 | 是 |
^ | %s | 字符串 | 否,以其为结束 | 否,以其为结束 |
getchar | 字符 | 是 | 是 | |
gets | 字符串 | 是 | 否,以其为结束 |
输出
函数名 | 数量 |
---|---|
printf | 字符/字符串 |
putchar | 字符 |
puts | 字符串 |
提醒:如果不是使用scanf
函数的%s格式或者gets
函数输入字符串,要在每个字符串的后面加入\0
,否则printf
和puts
输出字符串会因无法识别字符串末尾而输出一大堆乱码。
string.h头文件
函数名 | 功能 |
---|---|
strlen() | 得到字符数组中第一个\0 前的字符的个数 |
strcmp() | 返回两个字符串大小的比较结果 |
strcpy(str_to, str_from) | 把一个字符串赋值给另一个字符串 |
strcat() | 把一个字符串接到另一个字符串后面 |
sscanf与sprintf
sscanf(str, "%d", &n);
sprintf(str, "%d", n);
sscanf
支持正则表达式。
以数组作为函数参数
参数中的第一维不需要填写长度。即如果是二维数组,则第二维需要填写长度。
数组可以作为参数,但是不可作为返回类型。