13-C语言字符串函数库

目录:

一、C语言字符串函数库

二、用命令行输入参数

回到顶部

一、C语言字符串函数库

1 #include <string.h>

2 字符串复制

strcpy(参数1,参数2);

参数1:目标字符串位置(复制到哪里)

参数2:源字符串(来源)

3 字符串拼接函数

strcat(参数1,参数2);

参数1:第一个字符串

参数2:第二个字符串

将第一个字符串的内容与第二个字符串的内容拼接在一起,保存在第一个字符串中。

4 字符串长度

strlen(str);

参数为字符串,返回字符串长度,不包含结束符。

5 字符串比较函数

strcmp(参数1,参数2);

根据ASCII码表来比较字符串中每一个字符是否相等,结果为两个字符串的差值,差值为0,字符串相等,否则不相等。

练习:模拟系统登录,提示输入用户名、密码,和数据库匹配,用户名:admin密码:123登录成功,否则登录失败,重新登录,输入错误3次,退出程序。

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <stdlib.h>
 4 
 5 //strcpy字符串复制函数
 6 void test(){
 7     char* str = "hello";
 8     char str2[10];
 9     strcpy(str2, str);//字符串复制函数,把str的字符串赋给str2,该函数返回新复制的字符串的首地址
10     printf("str2:%s\n",str2);
11     printf("str2 address:%p\n",strcpy(str2, str));
12 }
13 
14 //strcat字符串拼接函数
15 void test2(){
16     char str3[20] = {'h','e','l','l','o','\0'};//定义字符串变量
17     char* str4 = " world";//定义字符串常量
18     strcat(str3,str4);//这里不能调换位置,因为str4值不能修改
19     printf("str3:%s\n",str3);
20 }
21 
22 //strlen字符串长度函数
23 void test3(){
24     char str3[20] = {'h','e','l','l','o','\0'};
25     printf("str3 length:%zd\n",strlen(str3));//不包括结束符'\0',strlen参数存放数组名、字符指针名以及字符常量,该函数返回int型整数
26 }
27 
28 //strcmp字符串比较函数
29 void test4(){
30     char* str5 = "A";
31     char str6[6] = {'A','\0'};
32     int res = strcmp(str5, str6);//相等返回0,不相等返回差值(str5 - str6)
33     printf("res:%d\n",res);
34     if (res == 0) {//也可以写!res
35         printf("字符串相等\n");
36     }else{
37         printf("字符串不相等");
38     }
39 }
40 int main(int argc, const char * argv[])
41 {
42     /*
43      练习:模拟系统登录,提示输入用户名、密码,和数据库匹配,用户名:admin密码:123登录成功,否则登录失败,重新登录,输入错误3次,退出程序。
44      */
45     char* db_username = "admin\n";
46     char* db_password = "123\n";
47     char username[10];
48     char password[10];
49     for (int i = 0; i < 3; i++) {
50         printf("输入用户名:\n");
51         fgets(username, 10, stdin);
52         printf("输入密码:\n");
53         fgets(password, 10, stdin);
54         int res_username = strcmp(db_username, username);
55         int res_password = strcmp(db_password, password);
56         
57         if (res_username == 0 && res_password == 0) {
58             printf("登录成功!欢迎您。\n");
59             break;
60         }else{
61             if (i == 2) {
62                 printf("对不起!登录超过三次。\n");
63                 exit(0);//退出系统
64             }
65             printf("登录失败!请重新登录。\n");
66         }
67     }
68     return 0;
69 }

回到顶部

二、用命令行输入参数

1 argc代表命令行的参数个数(包含命令本身)

2 *argv[]代表命令行的参数的值(字符串)(包含命令本身)

3 运行:./a.out  abc  hahaha

 1 #include <stdio.h>
 2 
 3 int main(int argc, const char * argv[])
 4 {
 5     
 6     // insert code here...
 7     printf("argc, %d!\n",argc);
 8     for (int i = 0; i < argc; i++) {
 9         printf("argv[%d]:%s\n",i,argv[i]);
10     }
11     /*
12      tarenatekiMac-mini-3:命令行参数 tarena$ cc main.c
13      tarenatekiMac-mini-3:命令行参数 tarena$ ./a.out
14      argc, 1!
15      argv[0]:./a.out
16      tarenatekiMac-mini-3:命令行参数 tarena$ ./a.out a ccc
17      argc, 3!
18      argv[0]:./a.out
19      argv[1]:a
20      argv[2]:ccc
21      tarenatekiMac-mini-3:命令行参数 tarena$ 
22      */
23     return 0;
24 }

练习:

定义五虎上将,guanyu、zhangfei、zhaoyun、huangzhong、machao,通过命令行方式,输入一个人名,然后判断输出,是否是五虎上将,结果输出到屏幕上。

#include <stdio.h>
#include <string.h>

int main(int argc, const char * argv[])
{
    char* names[5] = {"guanyu","zhangfei","zhaoyun","huangzhong","machao"};
    
    printf("argc, %d!\n",argc);
    for (int i = 0; i < argc; i++) {
        printf("argv[%d]:%s\n",i,argv[i]);
        if (strcmp(argv[i],names[0]) == 0 || strcmp(argv[i],names[1]) == 0 || strcmp(argv[i],names[2]) == 0 || strcmp(argv[i],names[3]) == 0 || strcmp(argv[i],names[4]) == 0) {
            printf("是:%s\n",argv[i]);
        }else{
            printf("不是\n");
        }
    }
    return 0;
}
posted @ 2013-12-14 13:56  回读(IOS)  阅读(540)  评论(4编辑  收藏  举报