zoukankan      html  css  js  c++  java
  • 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
    ",str2);
    11     printf("str2 address:%p
    ",strcpy(str2, str));
    12 }
    13 
    14 //strcat字符串拼接函数
    15 void test2(){
    16     char str3[20] = {'h','e','l','l','o',''};//定义字符串变量
    17     char* str4 = " world";//定义字符串常量
    18     strcat(str3,str4);//这里不能调换位置,因为str4值不能修改
    19     printf("str3:%s
    ",str3);
    20 }
    21 
    22 //strlen字符串长度函数
    23 void test3(){
    24     char str3[20] = {'h','e','l','l','o',''};
    25     printf("str3 length:%zd
    ",strlen(str3));//不包括结束符'',strlen参数存放数组名、字符指针名以及字符常量,该函数返回int型整数
    26 }
    27 
    28 //strcmp字符串比较函数
    29 void test4(){
    30     char* str5 = "A";
    31     char str6[6] = {'A',''};
    32     int res = strcmp(str5, str6);//相等返回0,不相等返回差值(str5 - str6)
    33     printf("res:%d
    ",res);
    34     if (res == 0) {//也可以写!res
    35         printf("字符串相等
    ");
    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
    ";
    46     char* db_password = "123
    ";
    47     char username[10];
    48     char password[10];
    49     for (int i = 0; i < 3; i++) {
    50         printf("输入用户名:
    ");
    51         fgets(username, 10, stdin);
    52         printf("输入密码:
    ");
    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("登录成功!欢迎您。
    ");
    59             break;
    60         }else{
    61             if (i == 2) {
    62                 printf("对不起!登录超过三次。
    ");
    63                 exit(0);//退出系统
    64             }
    65             printf("登录失败!请重新登录。
    ");
    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!
    ",argc);
     8     for (int i = 0; i < argc; i++) {
     9         printf("argv[%d]:%s
    ",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!
    ",argc);
        for (int i = 0; i < argc; i++) {
            printf("argv[%d]:%s
    ",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
    ",argv[i]);
            }else{
                printf("不是
    ");
            }
        }
        return 0;
    }
  • 相关阅读:
    Windows下的免安装版MySQL配置
    spket插件安装并设置JQuery自动提示
    js生成条形码——JsBarcode
    金明的预算方案
    文化之旅
    方格取数
    天使的起誓
    最大差值
    A%B Problem
    取数游戏
  • 原文地址:https://www.cnblogs.com/yangmx/p/3474281.html
Copyright © 2011-2022 走看看