零基础C语言:第二讲(字符串)

284 阅读2分钟

「这是我参与2022首次更文挑战的第2天,活动详情查看:2022首次更文挑战

字符串

  • C语言没有字符串类型

  • 字符串的存储和表示

    • 字符串常量:“XFY”,“大发哥”
    • 字符数组

      • 方式一:初始化字符数组的每个元素,char str1[10]={'F','i','s','h','c','\0'};
      • 方式二:不写元素个数,编译器自动计算,char str2[]={'F','i','s','h','c','\0'};
      • 方式三:使用字符串常量初始化字符数组,char str3[]={"FishC"};
      • 方式四(建议使用):使用字符串常量初始化,可以省略大括号,char str4[]="FishC";
  • 注:字符串结束标志为‘\0’

  • 字符串处理函数

    • 获取字符串长度(不是尺寸):strlen 注意strlen计算的是输入字符串的长度,而sizeof包含了字符串结束符‘\0’

      • 举例
      • 结果
    • 拷贝字符串:strcpy和strncpy

      • 不能使用赋值号直接赋值
      • strcpy(str1,str2);

        • 参数1是目标字符串,参数2为拷贝源
        • 使用时str1长度必须大于等于str2,不然出现问题,拷贝的时候结束符会一同拷贝过去‘\0’
        • 举例
        • 结果
      • strncpy(str1,str2,n);

        • 受限拷贝长度,参数1是目标字符串,参数2为拷贝源,参数3代表拷贝的字符个数
        • 如果全部替换则需加结束符‘\0’,或者多加一个拷贝数
        • 举例
        • 结果
    • 连接字符串:strcat和strncat

      • 举例
      • 结果
      • 注:该函数会自动在末尾添加结束符‘\0’
    • 比较字符串:strcmp和strncmp

      • 比较两个字符串是否完全相同,如果一致则返回0,不一致则返回大于或小于0的值
      • 原理:从第一个字符开始依次对比字符的ASCLL码值,如果第一个字符串中的对应字符的ASCLL码大于第二个字符串对应字符则返回一个大于0的值,反之。
      • 举例
      • 结果