zoukankan      html  css  js  c++  java
  • C语言学习第八章

    今天开始学习字符串,学完以后最低要做到了解什么是字符串,以及字符串的一些应用方法,毕竟字符串还是很常见的.

    简单的字符串"helloworld",这个字符串大家应该都很眼熟,学编程的第一站啊~

    "helloworld"这就是一个字符串,注意S是大写的,'h'这样的是一个字符对应的数据类型名char,很多个字符组合在一起就是一个字符串了,注意字符串是用双引号(" ")引起来的哦,可不是'h''e''l''l''o'这样简单粗暴的组合在一起哦...

    字符串与字符数组:

    字符串:在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串.

    字符数组:字符数组和字符串的区别是:字符串的末尾有一个空字符 ‘’[A1] 


     [A1]对应的ascii码值:0

    字符串的初始化

    定义并初始化一个字符串的方法:

    char name[15]={ 'W', 'a', 'n', 'g', 'L', 'i', ''};

    har name[15] = "WangLi";

    char password[] = "012345678";

    字符串的输出”%s”,最后的’’是不会输出的.

    字符串I/0函数

    char name[10];

    gets(name);[A1] 

    puts(name);[A2] 


     [A1]从键盘上读入一个完整的行,存入字符数组name。并用空字符''取代行尾的换行符' '。

     [A2]把字符数组中的字符串输出到显示器。

    示例:

    //字符串 
       void testString()
       {
               
              char name[20];
              char address[20];
           char job[10]; 
        //scanf("%s",name); //使用scanf时不能输入空格,不然会截断.
              //printf("%s",name);
              printf("请输您的入姓名:
    ");
        gets(name);//获取用户输入的一行数据并将其保持到name中
        printf("请输您的入地址:
    ");
            gets(address);//获取用户输入的一行数据并将其保持到name中
            printf("请输入您的工作:
    ");
            gets(job);//获取用户输入的一行数据并将其保持到name中
            printf("--------------------------------
    ");    
            puts(name);//向显示器输出name的内容
            puts(address);
             puts(job); 
       }

    示例2 统计字符串中空格的数量

    void calcSpace(){
              char str[30];
           int i=0,count=0;
              printf("请输入一行字符串:
    ");
                gets(str);//获取用户输入的字符串 
                while(str[i]!=''){// ''代表字符串的结束 
                    if(str[i]==' '){
                       count++;
                    }
                 i++;
           }
           printf("您输入的字符串中包含%d个空格
    ",count);
       }

    字符串处理函数

    与字符串有关的内置函数在头文件string.h中定义

    要使用标准库字符串处理函数,程序前应该包含: #include <string.h>

    下面是一些常用的字符串函数.

    strlen(s):统计字符串的长度

    strcpy(dest,src): 使用strcpy(dest,src)实现将src的字符串(源字符串)复制到dest(目标字符串);

    示例:

    void testString(){
        char str[]="hello,zzsxt!";
         char str2[15];
        //使用strlen(s)统计字符串的长度
        int len = strlen(str);
        printf("%s的长度为%d
    ",str,len);
        //使用strcpy(dest,src)实现将src的字符串(源字符串)复制到dest(目标字符串)
        strcpy(str2,str);
        printf("复制str到str2中,str2=%s
    ",str2);
    }

    strcmp(str1,str2): 比较字符串str1和str2的大小(str1==str2返回值为0,str1>str2:返回正数 str1<str2:负数),不忽略大小写

    strcmpi(str1,str2): 忽略大小写比较字符串str1和str2的大小(str1==str2返回值为0,str1>str2:返回正数 str1<str2:负数)

    示例:

    //简单用户登陆 
    void testLogin(){
        char userName[20],password[20],code[6];
        printf("请输入用户名:
    ");    
         gets(userName);//将用户输入的用户名赋值给userName
        printf("请输入密码
    ");    
         gets(password);
        printf("请输入验证码
    ");    
         gets(code);
        //判断验证码是否正确:ZZSXT
        // strcmpi(str1,str2):忽略大小写进行比较 
        if(strcmpi(code,"ZZSXT")==0){
            //判断用户名为zhangsan,密码为123456时登陆成功, 
             if((strcmp(userName,"zhangsan")==0)&&(strcmp(password,"123456"))==0){
                 printf("登陆成功!
    ");
             }else{         
                 printf("用户名或密码有误!
    ");
             }
        }else{
             printf("验证码有误!请重新输入
    ");
        }      
    }

    strcat(dest, src):把字符串 src中的字符串连接到字符串 dest中字符串的后面

    示例:

    void testStrcat(){//字符串的拼接
       char dest[]="zzsxt,";
       char src[]="is very good!";
       printf("连接前:
    ");
       printf("dest=%s
    ",dest);
       printf("src=%s
    ",src);
       strcat(dest,src);// 把字符串 src中的字符串连接到字符串 dest中字符串的后面
       printf("连接后:
    ");
       printf("dest=%s
    ",dest);
       printf("src=%s
    ",src);
    }

    字符指针: 在C语言中,可以将字符指针指向字符串,被指向的字符串可以是一个常量字符串,也可以是一个存储着字符串的字符数组

    示例:

    void  testStrPointer(){
        char *p="wahaha,wahaha!";
        int count=0;
        while(*p!=''){
             if(*p=='a'){
                count++;     
            }
            p++;
        }
        printf("该字符串中a出现的次数共%d次
    ",count);    
    }
    View testStrPointer()

    字符指针数组:一个数组中的各个元素都是字符指针

    示例:

    void testStrPointerArr()
    {
        //声明一个字符指针数组:包含的都是字符指针
        /*
        char *str1="zhangsan";
        char *str2="lisi";
        char *str3="wangwu";
        char *names[]={*str1,*str2,*str3....};
        */ 
        char *names[]={"zhangsan","lisi","wangwu","zhaoliu","tianqi","xinba"};
         char *temp;//中间变量:字符指针变量 
        printf("交换前:names[2]=%s,names[3]=%s
    ",names[2],names[3]);
        temp=names[2];
        names[2]=names[3];
        names[3]=temp;
        printf("交换前:names[2]=%s,names[3]=%s
    ",names[2],names[3]);
    }

    示例:用户定义版字符串拷贝函数

     1 void mystrcpy(char dest[ ], char src[ ])
     2 {
     3        int i = 0;
     4        while(src[i] != '')
     5        {
     6       dest[i] = src[i];
     7       i++;
     8         }
     9        dest[i] = '';
    10 }

    示例2: 用户定义版求字符串长度函数

     1 int mystrlen (char *s) 
     2 {
     3          int n = 0;
     4          while (*s != '')
     5          {
     6                  ++s;
     7                  ++n;
     8          }
     9         return n;
    10 } 

    OK以上就是字符串部分的内容了,C语言的学习已经快要结束了,并不是不再坚持了,而是因为一开始学C的目的只是为了后面学JAVA打基础而已,而现在的学习深度据老师说已经足以支撑Java基础的部分了,所以C语言剩下的不多了,但是C语言确实挺有趣的,以后有机会我还是要好好学习一下的..

  • 相关阅读:
    导出表结构语句
    closeChannel: close the connection to remote address[] result: true
    spingboot使用rabbitmq
    服务器很卡问题排查
    docker-compose安装nginx
    Docker方式安装ShowDoc
    "docker build" requires exactly 1 argument
    Intellij IDEA常用快捷键介绍 Intellij IDEA快捷键大全汇总
    IDEA 2018 3.4 激活破解方法
    jpress:v3.2.5的docker-compose安装
  • 原文地址:https://www.cnblogs.com/fengyeyu/p/6730558.html
Copyright © 2011-2022 走看看