C语言之字符串

C语言之字符串

文章链接:http://blog.csdn.net/qq_16628781/article/details/72331637

知识点

  1. 字符串的概念和定义;
  2. 字符串的操作;
  3. 新名词记录{指针}

概述

在每种编程语言中,必然会使用到字符串,或者对字符串的操作。那么在C语言中的字符串又是怎样的呢?

知识理解阶段

C语言中的字符串,和Java中的不一样就是关键字。C语言中利用“char”,而Java中使用string。

C语言中定义字符串如下:
相当于用一个数组来存放一个字符串,例如下面存放的greeting[6],分别是利用6个内存地址存放着’H’,’E’,’L’,’L’,’O’,’\0’,6个字符串,他们在greeting下面的下标从0-5,但是并不能利用下标来访问每一个字符。其中,C 编译器会在初始化数组时,自动把 ‘\0’ 放在字符串的末尾。

//字符串
char greeting[6] = {'H','E','L','L','O'};
char greet[] = "hello";
char str1[] = "str1";
char str2[] = "str2";

//打印,%s是从,号后面取得一个字符串,拼接起来并打印
printf("greeting[6]:%s\n", greeting);
//输出为:greeting[6]:HELLO

字符串的操作函数

在C语言的基本函数库中,给我提供了不少关于字符串的操作函数。比较常用的有以下几个函数:

  • 字符串复制:
strcpy(s1, s2);
//复制字符串 s2 到字符串 s1。
  • 字符串连接:

    strcat(s1, s2);
    //连接字符串 s2 到字符串 s1 的末尾。
  • 计算字符串长度

    strlen(s1);
    //返回字符串 s1 的长度。
  • 字符串比较

    strcmp(s1, s2);
    如果 s1 和 s2 是相同的,则返回 0;如果 s1<s2 则返回小于 0;如果 s1>s2 则返回大于 0。
  • 寻找给定字符串所在的位置

    strchr(s1, ch);
    //返回一个指针,指向字符串 s1 中字符 ch 的第一次出现的位置。
    //或者
    strstr(s1, s2);
    返回一个指针,指向字符串 s1 中字符串 s2 的第一次出现的位置。

看了这么多,我们可以拿来练一下手。

 void strTest(){
    printf("greeting[6]:%s\n", greeting);
    //输出:greeting[6]:HELLO

    strcpy(str1, str2);
    printf("字符串复制,str1,msg : %s\n", greeting);
    //输出:字符串复制,str1,msg : HELLO

    int lenght = strlen(str1);
    printf("字符串长度,lenght:%d\n", lenght);
    //输出:字符串长度,lenght:4

    strcat(str1, str2);
    printf("连接两个字符串:%s\n", str1);
    //输出:连接两个字符串:str2str2

    int result = strcmp(str1, str2);
    printf("比价两个字符串,相同返回0,参数1<参数2,返回<0,否则返回>0。结果:%d\n", result);
    //输出:比价两个字符串,相同返回0,参数1<参数2,返回<0,否则返回>0。结果:-1

    char *s = "0123456789";
    char *p;
    p = strchr(s, '5');
    printf("%s\n", s);//结果:0123456789
    printf("%s\n", p);//结果:56789
    printf("%ld\n", *p);//和%有关系,结果:53
    printf("%ld\n", p);//和%有关系,输出的是内存地址:4513410940

    const char str[] = "http://www.w3cschool.cc";
    const char ch = '.';
    char *ret;
    ret = strchr(str, ch);
    printf("|%c| 之后的字符串是 - |%s|\n", ch, ret);
    //结果:.w3cschool.cc
}

结果已经打印在每句话后面了。可以对照着看。

总结

其实字符串是比较好理解的一个概念。只是对于如何操作字符串,个人觉得是有点羞涩难懂的感觉,相对于Java来说。语法上有点不太一样,概念也有不少差异。

在对于字符串操作,C语言提供了很多现成的函数可以调用,有兴趣的同学可以去瞧瞧。

以上就是全部内容,如有任何问题,请及时与我联系。谢谢。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值