zoukankan      html  css  js  c++  java
  • C语言字符串

    一、字符串基础

    注意:字符串一定以结尾。

    printf("yang ");

    其中yang为字符串常量,"yang"='y' + 'a' + 'n' + 'g' + ''。字符串由很多的字符组成,通常使用字符数组来存储字符串,如char name[10]="yang";也可以以printf(name);的形式输出,即通过数组来访问字符串,但会有警告。因为默认情况下,printf函数只接受字符串常量作为参数(对变量并未写明)。

    字符串的三种写法:

    1. char name[8]="yang";//数组占用了8个字节的存储空间,但是只含有5个字符。
    2. char name[8]={'y' + 'a' + 'n' + 'g' + ''};
    3. char name[8]={'y' + 'a' + 'n' + 'g' + '0'};

    这三种写法在内存中的表现都是一样的。

     

    char name[] = {'y' + 'a' };前面不写个数,不是一个字符串,只能说是一个普通的字符数组。

    char name[] = "yang";

    name[1] = 'o'; 把字符串的第二个元素值由a改成o。

     

    二、字符串使用注意点

    (1)分析代码,了解的作用。

    char name[]="yang";

    char name2[]={'o' + 'k'};

    printf("name2 = %s", name2);

    %s:根据右边的参数,打印字符串(遇到为止)

    上面代码的打印结果为:okyang

    下面是内存情况分析:

     

    问1:char name[]="yng";则打印结果为什么?(oky)

    问2:此时打印name的值,使用%s是多少?yng还是y?

    (2)strlen函数

    strlen函数计算字符串的长度(字符数)但不包括,是字符数不是字数。比如一个汉字占三个字符。

    strlen("haha"); // 长度为4

    strlen("哈haha"); // 长度为7而不是5

    char name[] = "github";

    strlen(name);值为3,因为strlen从字符串的地址开始计算,直到遇到为止。

    假设

    char name[] = "github";

    char name2[] = {'o' + 'k'};

    int size = strlen(name);

    此时size的值为9。

    (3)练习,编写一个函数char_contains(char str[],char c),如果字符串中包含字符c,则返回1,否则返回0。

    int char_contains(char str[], char c)

    {

      //遍历整个字符串

      for(int i=0,i<strlen(str);i++)

      {

        if (str[i] == c)

        return 1;

      }

      return 0;

    }

     

    // 调用语句

    unt result = char_contains("yang", 'a');

     

    // 使用while循环

    ①. while(i < strlen(str))

    ②. while( str[i] !='')

    ③. while(str[i])

    ④. int i = -1; while(str[i++])

     

    三、字符串数组

    二维字符数组,存储两个字符串数组,每个的长度为1,下面是两种写法但存储情况是一样的。

    char name[2][10] = {"jack", "rose"};

    char name2[2][10] = {

    {'j' + 'a' + 'c' + 'k' + ''},

    {'r' + 'o' + 's' + 'e' + ''}

    }

    把rose输出:printf("%s", name2[1]);

    输出k:printf("%c", name2[0][3]);

  • 相关阅读:
    Variable() placeholder() constant() 的区别
    scrapy-redis+selenium+webdriver 部署到linux上
    scrapy-redis+selenium+webdriver解决动态代理ip和user-agent的问题(全网唯一完整代码解决方案)
    [学习记录]NLTK常见操作二(分句,分词,词干提取)
    [学习记录]NLTK常见操作一(去网页标记,统计词频,去停用词)
    [学习记录]python正则表达式
    [学习记录]MySQL之初级查询语句(select,where)
    [学习记录]pymysql的基本操作
    [学习记录]MySQL临时整理
    [学习记录]面对wxpython的长跑(100米:wxpython安装,相关文件,wx.App,wx.Frame)
  • 原文地址:https://www.cnblogs.com/zengshuilin/p/5731173.html
Copyright © 2011-2022 走看看