您现在的位置: 华盟网 >> 编程 >> C语言 >> 正文

C语言字符串学习理解

2014/12/11 作者:不详 来源: 华盟收集
导读 字符串  折半查找  注意点:折半查找被查找的数组必须是有序的  查表法写法  void printHex(int num)  {  1.定义一个数组, 作为取…

  字符串

  折半查找

  注意点:折半查找被查找的数组必须是有序的

  查表法写法

  void printHex(int num)

  {

  1.定义一个数组, 作为取出的八进制的结果查询的表

  char cs[] = {'0', '1', '2', '3', '4', '5',

  '6', '7', '8', '9',

  'a', 'b', 'c', 'd', 'e', 'f'};

  2.定义一个数组,用于保存查询后的结果

  char rs[8] = {0};

  3.定义变量存储结果的索引,指向了结果数组的最大下标

  int pos = sizeof(rs) / sizeof(rs[0]); // 8

  while (num != 0) {

  取出num的最低4位

  int index = num & 15;

  把取出的值当作索引取结果数组中查询

  char c = cs[index];

  把查询出来的结果保存到数组中

  rs[--pos] = c;

  右移4位,方便下一次取值

  num = num >> 4;

  }

  for (int i = pos; i < 8; i++) {

  printf("%c", rs[i]);

  }

  printf("\n");

  }

  二维数组

  元素类型 数组名[元素个数];

  元素类型: 说明将来数组中存放元素的类型

  元素个数: 说明将来数组中能存放多少个元素

  元素类型 数组名[行数][列数];

  元素类型 数组名[有多少个一维数组][每一个一维数组的元素个数];

  二维数组本质依然是一个一维数组, 只不过他的每一个元素又是一个一维数组而已

  二维数组可以省略行数,会自动根据初始化的值计算出有多少个一维数组

  注意:二维数组不能省略列数,必须明确的告诉二维数组中每一个一维数组可以存放多少个元素

  要给二维数组进行一次性的赋值,只能在定义二维数组的时候

[NextPage]

  三 字符串常量

  用双引号引起来的就是字符串常量

  字符串用数组保存, 字符串是由字符组成

  \0的ascii码值是 0

  \0是字符串结束的标志

  如果数组元素个数大于初始化的字符,没有初始化的元素的值默认是0

  而\0的ascii码值是 0, 所以也是一个字符串

  静态初始化, 会更具后面初始化的元素来确定数组的长度

  字符串的本质还是一个数组

  %s用于输出字符串

  %s是根据传入的地址,依次取出每一个字节输出,直到遇到\0为止

  没有\0就不是字符串,

  计算字符串有效长度

  strlen用于计算字符串的长度,并且不包括\0

  2. 字符串拼接

  strcat用于拼接字符串, TA会把src中的内容拼接到dest后面, 从dest的\0开始拼接src

  注意点:name1数组要能够容纳得下 name1本身的字符 + name2的所有字符,

  拼接完成后会自动在后面加上一个\0

  3. 字符串拷贝

  会把src中的内容拷贝到dest中

  strcpy(char *dest, const char *src);

  注意点:dest的容量必须足够大,否则会报错

  拷贝之后并不会清空以前的字符串

  4.字符串比较

  strcmp会比较str1和str2是否相等

  如果相等会返回一个int类型的值

  如果str1 等于 str2返回0

  如果str1 大于 str2返回1(是一个整数)

  如果str1 小于 str2返回-1(是一个负数)

  是逐个比较

                  微信群名称:华盟黑白之道二群   华盟-黑白之道⑦QQ群: 9430885

  • 上一篇编程:

  • 下一篇编程:
  • 网友评论
      验证码
     

    关注

    分享

    0

    讨论

    2

    猜你喜欢

    论坛最新贴