1. 一维字符型数组特性C语言中没有字符串类型操作和存储字符串需要通过字符型数组实现。字符型数组的定义数据类型 数组名[元素个数];元素个数必须为常量且必须足够确保能够存放下字符串末尾的\0字符。2. 数组元素访问以下是一个完整的数组输入、排序选择排序和输出的示例int a[5] {0}; int len sizeof(a) / sizeof(a[0]); int i 0; int j 0; int min 0; int tmp 0; for (i 0; i len; i) { scanf(%d, a[i]); } for (j 0; j len-1; j) { min j; for (i j1; i len; i) { if (a[i] a[min]) { min i; } } if (min ! j) { tmp a[j]; a[j] a[min]; a[min] tmp; } } for (i 0; i len; i) { printf(a[%d] %d\n, i, a[i]); } return 0;3. 字符型数组的存储字符型数组所占空间大小 数组元素个数。可以通过sizeof(a) / sizeof(a[0])来获得数组元素个数。4. 字符型数组的初始化初始化 ! 赋值全部初始化局部初始化没有给定初值的元素被初始化为0值。默认初始化尽量不要使用默认初始化。5. 字符串的打印printf %sputsputs会在字符串末尾多打印一个\n字符。char str[20]; str[0]; str[1]; str[2]; ... str[19];初始化示例char str[6] {h, e, l, l, o, \0}; char str[6] {hello}; char str[6] hello;局部初始化示例char str[6] {h, e, l}; char str[6] {hel}; char str[6] hel; char str[6] {0};注意0零对应二进制00000000等价于\0。\0反斜杠0对应二进制00000000等价于0。0字符0对应二进制00110000等价于48。省略元素个数初始化char str[] {h, e, l, \0}; char str[] {hel}; char str[] hel;打印示例char str[20] {hello world}; printf(str %s\n, str); puts(str);6. 字符串的接收scanf %sgetschar str[32] {0}; scanf(%s, str); gets(str);7. 字符型数组和字符串常见操作7.1 统计字符型数组中存放的字符串长度字符串长度从字符串开头到\0中间字符的个数。可以利用strlen来统计字符串长度。注意strlen统计字符串的长度。sizeof获得数组所占空间大小。char str[32] {hello}; int len 0; len strlen(str); len sizeof(str);7.2 字符串的拷贝注意目的空间一定要能够存放的下源字符串否则会内存越界访问。char str[32] {0}; strcpy(str, hello world);7.3 字符串的拼接注意目的空间一定要能够存放的下拼接后的字符串。char str1[32] {hello}; char str2[32] {world}; strcat(str1, str2);7.4 字符串的比较注意strcmp会返回3种值0表示两个字符串相等。 0第一个字符串 第二个字符串。 0第一个字符串 第二个字符串。字符串比较从左到右依次比较直到不相同的字符谁的 ASCII 码值大谁就大。ret strcmp(str1, str2);7.5 练习从终端接收一个字符串统计字符串的长度不能使用strlen来实现功能。从终端接收一个字符串统计该字符串中大写字母、小写字母、数字和空格的个数并完成打印。从终端接收一个字符串将该字符串拷贝到另一个数组空间中不能使用strcpy来实现功能。8. 二维整型数组8.1 数组定义行数、列数必须为常量。数据类型 数组名[行数][列数]; int a[2][3];8.2 数组元素的访问数组名[行下标][列下标]; a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2]8.3 数组的存储数组所占空间大小 数据类型所占空间大小 * 元素个数。二维数组存放顺序逐行从左到右存储。int a[2][3];8.4 二维数组的理解二维数组可以理解为由一维数组构成的一维数组。N维数组可以看成是由 N-1 维数组构成的一维数组。8.5 二维数组初始化全部初始化int a[2][3] {1, 2, 3, 4, 5, 6}; int a[2][3] {{1, 2, 3}, {4, 5, 6}};局部初始化默认初始化二维数组默认初始化行能省略列不能省略。9. 作业与练习作业1字符串操作不使用库函数从终端接收一个字符串统计字符串的长度不能使用strlen。从终端接收一个字符串将字符串拷贝到另外一个数组空间不能使用strcpy。从终端接收2个字符串实现2个字符串的拼接并完成打印不能使用strcat。从终端接收2个字符串实现2个字符串的比较并将比较的结果输出在终端不能使用strcmp。练习打印出所有的水仙花数这个数为3位数每位上的立方和值为该数本身。作业2博客。
C语言字符数组与字符串操作详解
1. 一维字符型数组特性C语言中没有字符串类型操作和存储字符串需要通过字符型数组实现。字符型数组的定义数据类型 数组名[元素个数];元素个数必须为常量且必须足够确保能够存放下字符串末尾的\0字符。2. 数组元素访问以下是一个完整的数组输入、排序选择排序和输出的示例int a[5] {0}; int len sizeof(a) / sizeof(a[0]); int i 0; int j 0; int min 0; int tmp 0; for (i 0; i len; i) { scanf(%d, a[i]); } for (j 0; j len-1; j) { min j; for (i j1; i len; i) { if (a[i] a[min]) { min i; } } if (min ! j) { tmp a[j]; a[j] a[min]; a[min] tmp; } } for (i 0; i len; i) { printf(a[%d] %d\n, i, a[i]); } return 0;3. 字符型数组的存储字符型数组所占空间大小 数组元素个数。可以通过sizeof(a) / sizeof(a[0])来获得数组元素个数。4. 字符型数组的初始化初始化 ! 赋值全部初始化局部初始化没有给定初值的元素被初始化为0值。默认初始化尽量不要使用默认初始化。5. 字符串的打印printf %sputsputs会在字符串末尾多打印一个\n字符。char str[20]; str[0]; str[1]; str[2]; ... str[19];初始化示例char str[6] {h, e, l, l, o, \0}; char str[6] {hello}; char str[6] hello;局部初始化示例char str[6] {h, e, l}; char str[6] {hel}; char str[6] hel; char str[6] {0};注意0零对应二进制00000000等价于\0。\0反斜杠0对应二进制00000000等价于0。0字符0对应二进制00110000等价于48。省略元素个数初始化char str[] {h, e, l, \0}; char str[] {hel}; char str[] hel;打印示例char str[20] {hello world}; printf(str %s\n, str); puts(str);6. 字符串的接收scanf %sgetschar str[32] {0}; scanf(%s, str); gets(str);7. 字符型数组和字符串常见操作7.1 统计字符型数组中存放的字符串长度字符串长度从字符串开头到\0中间字符的个数。可以利用strlen来统计字符串长度。注意strlen统计字符串的长度。sizeof获得数组所占空间大小。char str[32] {hello}; int len 0; len strlen(str); len sizeof(str);7.2 字符串的拷贝注意目的空间一定要能够存放的下源字符串否则会内存越界访问。char str[32] {0}; strcpy(str, hello world);7.3 字符串的拼接注意目的空间一定要能够存放的下拼接后的字符串。char str1[32] {hello}; char str2[32] {world}; strcat(str1, str2);7.4 字符串的比较注意strcmp会返回3种值0表示两个字符串相等。 0第一个字符串 第二个字符串。 0第一个字符串 第二个字符串。字符串比较从左到右依次比较直到不相同的字符谁的 ASCII 码值大谁就大。ret strcmp(str1, str2);7.5 练习从终端接收一个字符串统计字符串的长度不能使用strlen来实现功能。从终端接收一个字符串统计该字符串中大写字母、小写字母、数字和空格的个数并完成打印。从终端接收一个字符串将该字符串拷贝到另一个数组空间中不能使用strcpy来实现功能。8. 二维整型数组8.1 数组定义行数、列数必须为常量。数据类型 数组名[行数][列数]; int a[2][3];8.2 数组元素的访问数组名[行下标][列下标]; a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2]8.3 数组的存储数组所占空间大小 数据类型所占空间大小 * 元素个数。二维数组存放顺序逐行从左到右存储。int a[2][3];8.4 二维数组的理解二维数组可以理解为由一维数组构成的一维数组。N维数组可以看成是由 N-1 维数组构成的一维数组。8.5 二维数组初始化全部初始化int a[2][3] {1, 2, 3, 4, 5, 6}; int a[2][3] {{1, 2, 3}, {4, 5, 6}};局部初始化默认初始化二维数组默认初始化行能省略列不能省略。9. 作业与练习作业1字符串操作不使用库函数从终端接收一个字符串统计字符串的长度不能使用strlen。从终端接收一个字符串将字符串拷贝到另外一个数组空间不能使用strcpy。从终端接收2个字符串实现2个字符串的拼接并完成打印不能使用strcat。从终端接收2个字符串实现2个字符串的比较并将比较的结果输出在终端不能使用strcmp。练习打印出所有的水仙花数这个数为3位数每位上的立方和值为该数本身。作业2博客。