黑马程序员技术交流社区

标题: 字符串学习交流 [打印本页]

作者: 郭启冰    时间: 2015-12-6 23:14
标题: 字符串学习交流


注意:
    以下所学的字符串常用函数都在头文件<string.h>中,所以用这些函数之前要导入这个头文件


    1.strcmp:
            用法:int strcmp(字符串1,字符串2);

            两个参数,一个int的返回值:

        作用:
            判断两个字符串是否相同,如果返回0代表两个字符串相同 (实际开发中的用法)

            是比较两个字符串大小的!

            问字符串1比字符串2大吗?大则返回正数,相等则返回0,小于则返回负


        判断用户输入的账号是否等于某个账号
            做登录!!
                如果用户输入的是admin密码是88888,那么就提示登录成功,否则提示登录失败



    2.strcat:
            用法:strcat(字符数组1,字符串2);

        作用:把字符串2加入到字符数组1的实际字符串后面

            比如说前面一个字符数组保存的abc
            字符串2传的是qwe
            那么调用完后,字符数组最终保存的是abcqwe

        注意:字符数组1必须保证长度足够长



    3.strcpy:
            用法:strcpy(字符数组1,字符串2);

        作用:把字符串2复制到字符数组1,会覆盖掉字符数组1原来的内容

            比如说前面一个字符数组保存的是abc
            字符串2是qwe
            那么调用完后字符数组1最终保存的是qwe

        注意:字符数组1的长度必须保证足够长

        应用场景在:给字符数组重新赋值的时候


    4.strlen:
          用法:unsigned long  strlen(字符串);

        作用:计算这个字符串的实际长度,不包括\0

        注意:如果遇到中文或者中文符号,那么中文的实际位数要*3
        strlen的原理是:一直遍历你这个字符串,统计次数,直到遇到\0就结束

*/

#include <stdio.h>
#include <string.h>//要导入


int main(int argc, const char * argv[]) {
   
    //strcmp
    /*
    char str1[10] = "azc";
   
    char str2[] = "zbc";
   
    //数组名就是地址,所以这里比较的是地址是否相同
    if(str1 == str2){
        
        printf("相同\n");
        
    }else{
        
        printf("不相同\n");
    }
   
   
    int res = strcmp(str1, str2);
   
    printf("%d\n",res);//-25
   
    */
   
    //strcat
    /*
//    char str[4] = "abc";
//
//    strcat(str, "qwe");//越界错误
//   
//    puts(str);//abcqwe
   
    char str[] = "abc";//长度为4
   
    strcat(str, "qwe");//
   
    puts(str);//abcqwe
    */
   
    //strcpy
    /*
//    char str[10] = "abc";
//   
//    strcpy(str, "qwe");
//   
//    puts(str);//qwe
   
//    char *str = "abc";
//   
//    strcpy(str, "qwe");//这是错误的
//   
//    puts(str);//qwe
   
//    char str[] = "abc";//4个长度
//    strcpy(str, "qwerty");//运行报错,因为越界
   
   
//    char str[5];
//   
//    strcpy(str,"abc"); //相当于给str赋值
//   
//    puts(str);
   
//    char str[5];
//   
//    str = "abc";//不可以,因为数组名是一个地址常量
   
    char str[5] = "abc";
   
    //此时我想让str里面存的是zxv
   
//    str[0] = 'z';
//    str[1] = 'x';
//    str[2] = 'v';
   
    strcpy(str, "zxv");
    puts(str);
    */
   
    //strlen
    /*
//    char str1[4] = "abc";
//    long len = strlen(str1);
//   
//    printf("len=%ld\n",len);//3
//   
   
//    char *str = "abc";
//    long len = strlen(str);
//   
//    printf("len=%ld\n",len);//3

//    long len = strlen("abc");
//   
//    printf("len=%ld\n",len);//3
   
   
//    char str[10] = "abc\0zxc";
//   
//    long len = strlen(str);
//   
//    printf("len=%ld\n",len);//3
   
   
//    char str[] = "帅哥";//长度为7
//   
//    long len = strlen(str);
//   
//    //中文在MAC里面占用3个字节
//    //因为一个char类型只有1个字节,保存不了3个字节的汉字
//    //char c = '哈'; //这个会报错
//   
//    printf("len=%ld\n",len);//6  在mac下面一个中文字占用3个字节
   
//    char str[] = ",";
//   
//    printf("%lu\n",strlen(str));
   
   
//    char str[] = "abc哈哈哈"; //数组长度那才是13个
//   
//    printf("%lu\n",strlen(str));//12

   
//    char str[] = "班长不要爱我,haha"; //数组长度26
//   
//    printf("%lu\n",strlen(str));//25
    */
   
    return 0;
}
作者: luoye111    时间: 2015-12-7 13:19
关于strcat和strcpy最好说下长度不够直接挂掉
作者: paul20150103    时间: 2015-12-8 08:51
谢谢分享




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2