字符串
字符串最适合放在char
类型数组中存储。
例如要表示字符串"ABC"
,数组元素必须按一下顺序依次保存:
‘A’ 'B' 'C' '\0'
末尾null
字符\0
是字符串结束的"标志"
printf("size %lu\n",sizeof("ABC")); //size 4
字符串字面量的中间可以有
null
字符,不过应注意区分。字符串字面量"ABC"
是字符串,而字符串字面量"ABC\0CD"
不是字符串。
空字符串
char ns[] = ""; //元素个数是1,因为内部还有null字符
字符串的读取
#include <stdio.h>int main(void){ char name[100]; //为读取的字符串附加null字符并存储 printf("Please input your name: \n"); scanf("%s", name);//注意:scanf函数也不能加上& ! ! printf("Bonsvoir, Mr / Miss %s !! \n", name); return 0; }
字符串数组
#include <stdio.h>int main(void){ char cs[][6] = {"Turbo", "NA", "DOHC"}; for (int i = 0; i < 3; i++) { printf("cs[%d] = \"%s\"\n", i, cs[i]); } /* cs[0] = "Turbo" cs[1] = "NA" cs[2] = "DOHC" */ return 0; }
字符串处理
字符串长度
/** 返回字符串长度 @param s 字符串s @return 字符串长度 */int str_length(const char s[]){ int len = 0; while (s[len]) { //因为字符串最后一个元素是\0 len++; } return len; }
显示字符串
/** 显示字符串(打印字符串) @param s 字符串s */void put_string(const char s[]){ int i = 0; while (s[i]) { putchar(s[i++]); } }
数字字符的出现次数
/** 数字字符的出现次数 @param s 需要计算的字符串 @param cnt 保存数字字符的数组 */void str_dcount(const char s[], int cnt[]){ //将字符串s中的数字字符保存至数组cnt int i = 0; while (s[i]) { if (s[i] >= '0' && s[i] <= '9') { cnt[s[i] - '0']++; } i++; } }
英文字符的大小写转换
/** 将英文字符转换为大写字母 @param s 字符串 */void str_toupper(char s[]){ int i = 0; while (s[i]) { s[i] = toupper(s[i]); i++; } }/** 将英文字符转换为小写字母 @param s 字符串 */void str_tolower(char s[]){ int i = 0; while (s[i]) { s[i] = tolower(s[i]); i++; } }
字符串数组的参数传递
/** 显示字符串数组(字符串数组的参数传递) @param s 字符串数组 @param n 数组元素数量 */void put_strary(const char s[][6], int n){ for (int i = 0; i < n; i++) { printf("s[%d] = \"%s\"\n", i, s[i]); } } ....char cs[][6] = {"Turbo", "NA", "DOHC"}; put_strary(cs, 3);
作者:Jeremy_L_Wang
链接:https://www.jianshu.com/p/61991b541ec1