美图欣赏 | 设为首页 | 加入收藏 | 网站地图

当前位置:电脑中国 > 编程 > C语言 >

字符串处理总结

2018-02-11 09:38|来源:未知 |作者:dnzg |点击:

一、字符串输入

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 }
(责任编辑:dnzg)