如果数组大小较大(大概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支持正则表达式。
以数组作为函数参数
参数中的第一维不需要填写长度。即如果是二维数组,则第二维需要填写长度。
数组可以作为参数,但是不可作为返回类型。
本文详细介绍了在C语言中如何处理大型数组,包括数组的内存分配策略,使用memset和fill函数初始化数组的方法,以及字符数组的初始化、输入、输出技巧。此外,还深入探讨了string.h头文件中的关键函数,如strlen、strcmp、strcpy、strcat等的用法,以及sscanf和sprintf函数的正则表达式支持。
1125

被折叠的 条评论
为什么被折叠?



