字符串处理总结
一、字符串输入
1. 输入单个字符串
可以使用 scanf 函数,以空格为分割输入字符串,代码如下:
1 #include <stdio.h> 2 #include <string.h> 3 4 int main() { 5 char str[100]; 6 // 一个一个输入字符串,以空格为结尾 7 while(scanf("%s", str) != EOF) { 8 printf("%s\n", str); 9 } 10 11 return 0; 12 }
2. 输入整行字符串
可以使用 gets 函数,以 '\n' 为分割输入整行字符串,代码如下:
1 #include <stdio.h> 2 #include <string.h> 3 4 int main() { 5 char str[100]; 6 // 以 '\n' 为分割输入整行字符串 7 while(gets(str) != NULL) { 8 printf("%s\n", str); 9 } 10 11 return 0; 12 }
二、字符串处理
1. 字符串拷贝
可以使用 strcpy 函数,代码如下:
#include <stdio.h> #include <string.h> int main() { char str1[100], str2[100]; // 一个一个输入字符串,以空格为结尾 while(scanf("%s", str1) != EOF) { strcpy(str2, str1); // 将 str1 拷贝到 str2 printf("%s %s\n", str1, str2); } return 0; }
注意:1. str1 会覆盖 str2 内容;2. 定义数组是,str2 长度要大于或等于 str1。
也可以使用 strncpy 函数,代码如下:
1 #include <stdio.h> 2 #include <string.h> 3 4 int main() { 5 char str1[100], str2[100]; 6 // 一个一个输入字符串,以空格为结尾 7 while(scanf("%s %s", str1, str2) != EOF) { 8 strncpy(str2, str1, 3); // 将 str1的前3个字符 拷贝到 str1 9 printf("%s\n", str2); 10 } 11 12 return 0; 13 }
注意:str2 的前 n 个字符会被 str1 的前 n 个字符覆盖。
2. 字符串连接
可以使用 strcat 函数,代码如下:
1 #include <stdio.h> 2 #include <string.h> 3 4 int main() { 5 char str1[100], str2[100]; 6 // 一个一个输入字符串,以空格为结尾 7 while(scanf("%s %s", str1, str2) != EOF) { 8 strcat(str2, str1); // 将 str1 接到 str2 后面 9 printf("%s\n", str2); 10 } 11 12 return 0; 13 }
注意:要注意 str2 的长度为 str1 与原 str2 长度之和,str2 最后的 '\0' 字符会自动消失。
也可以使用 strncat 函数,将字符串的前 n 个字符连接到另一个字符后面,代码如下:
1 #include <stdio.h> 2 #include <string.h> 3 4 int main() { 5 char str1[100], str2[100]; 6 // 一个一个输入字符串,以空格为结尾 7 while(scanf("%s %s", str1, str2) != EOF) { 8 strncat(str2, str1, 3); // 将 str1 的前3个字符接到 str2 后面 9 printf("%s\n", str2); 10 } 11 12 return 0; 13 }
3. 字符串比较
可以使用 strcmp 函数,代码如下:
1 #include <stdio.h> 2 #include <string.h> 3 4 int main() { 5 char str1[100], str2[100]; 6 // 一个一个输入字符串,以空格为结尾 7 while(scanf("%s %s", str1, str2) != EOF) { 8 int ptr = strcmp(str1, str2); // 比较 str1,str2 9 if(ptr < 0) { // 返回值小于0 10 printf("%s < %s\n", str1, str2); // str1<str2 11 } else if(ptr == 0) { // 返回值等于0 12 printf("%s == %s\n", str1, str2); // str1=str2 13 } else { // 返回值大于0 14 printf("%s > %s\n", str1, str2); // str1>str2 15 } 16 } 17 18 return 0; 19 }
4. 字符串长度
可以使用 strlen 函数,代码如下:
1 #include <stdio.h> 2 #include <string.h> 3 4 int main() { 5 char str1[100]; 6 // 一个一个输入字符串,以空格为结尾 7 while(scanf("%s", str1) != EOF) { 8 // 输出字符串长度 9 printf("strlen = %d\n", strlen(str1)); 10 } 11 12 return 0; 13 }