首页后端开发其他后端知识C语言字符串的输入与输出,及常用方法是什么?

C语言字符串的输入与输出,及常用方法是什么?

时间2024-03-28 23:52:03发布访客分类其他后端知识浏览1289
导读:这篇文章给大家分享的是C语言字符串的相关内容,主要介绍C语言字符串的输入与输出,以及常用方法。另外,还介绍字符串数组的内容,新手学习和理解C语言字符串有一定帮助,那么感兴趣的朋友接下来一起跟随小编学习一下吧。 字符串 用双引号引起来...

这篇文章给大家分享的是C语言字符串的相关内容,主要介绍C语言字符串的输入与输出,以及常用方法。另外,还介绍字符串数组的内容,新手学习和理解C语言字符串有一定帮助,那么感兴趣的朋友接下来一起跟随小编学习一下吧。

    字符串

    • 用双引号引起来的就是字符串,字符串由字符组成
    • 字符串使用%s格式化输出
    • 字符串以\0结尾,没有\0就不是字符串
    • 只要是用双引号括起来的都是字符串
    • 字符串的本质就是数组
      注意: 字符串变量和普通的字符数组有一定的区别,C语言规定,字符串必须以\0结尾(作为字符串的结束符号),所以字符串变量的元素个数比字符数组的元素多一个\0
    #include stdio.h>
    
    
    int main(int argc, const char * argv[]) {
        
        
        char name[] = "zhangsan";
        
        
        // %u 表示无符号,sizeof 返回的是一个无符号长整型
        printf("name -->
         %s  size -->
         %lu\n", name, sizeof(name));
              // name -->
         zhangsan  size -->
     9
        
        // 字符串本质就是一个字符数组,前提是末尾以\0结尾
        char name1[] = {
    'z', 'h', 'a', 'n', 'g', 's', 'a', 'n', '\0'}
        ;
        
        printf("name1 -->
         %s\n", name1);
            // name1 -->
     zhangsan
        
        // 部分初始化中,没有被初始化的元素默认是0, \0 对应的ASCII值是 0
        char name2[9] = {
    'z', 'h', 'a', 'n', 'g', 's', 'a', 'n'}
        ;
        
        printf("name2 -->
         %s\n", name2);
            // name2 -->
         zhangsan
        
        // 字符串的本质就是数组
        char name3[] = "lisi";
        
        printf("name3 -->
         %s \n", name3);
           // name3 -->
         lisi
        name3[0] = 'x';
        
        printf("name3 -->
         %s \n", name3);
           // name3 -->
         xisi
       
    
        return 0;
    
    }
        
    

    字符串输出

    字符串输出可以使用printf 和 puts 进行输出,各有利弊

    - 输出字符串
    - 使用printf的%s占位符输出
    - 弊端:如果想要换行,必须加上\n
    - 优点:可以自定义格式化需要的字符串,也就是可以按照我们需要的格式来输出
    - 使用puts函数进行输出
    - 优点:可以自动换行
    - 缺点:不可以自定义格式,只能原样输出

    // printf
    char str[] = “lisi”;
        
    printf(“name = %s!!!\n”, str);
        
    printf("-----\n");
        
    
    // puts
    // 自动换行,只能原样输出
    puts(str);
        
    printf("----\n");
        
    
    

    #### 字符串输入

    字符串输入可以使用 scanf 和 gets 进行输入,各有利弊

    输入字符串

    • 使用scanf的%s占位符接收键盘输入的字符串
      • scanf 接收字符串,会以空格,tab,回车作为结束符号,利用scanf接收字符串时,字符串不能出现空格,tab,回车
    • 使用gets接收字符串
    // scanf
    printf("请输入一个字符串:\n");
        
    char buf[10];
        
    scanf("%s", buf);
           // 输入:fdsa fdas
    printf("buf -->
         %s\n", buf);
            // buf -->
         fdsa
    
    
    // gets
    char buf[10];
        
    printf("请输入一个字符串,使用gets接收:\n");
        
    gets(buf);
        
    printf("buf -->
         %s\n", buf);
            // buf -->
         fdsaf fdsa
    

    字符串常用方法

    计算字符串的长度

    #include stdio.h>
        
    #include string.h>
        
    
    // 申明函数
    int stringLen(char value[]);
    
    
    
    int main(int argc, const char * argv[]) {
        
        
        char string[] = "zhangsan";
        
        
        // 计算字符串的长度,不包括末尾\0的长度
        
        // 调用系统内置函数strlen 计算字符串的长度,需要先导入 string.h 头文件
        size_t length = strlen(string);
             // lenght -->
         8
        printf("lenght -->
         %lu\n", length);
        
        
        
        // 自定义计算字符串长度的函数
        int length2 = stringLen(string);
        
        printf("length2 -->
         %i\n", length2);
            // length2 -->
         8
        return 0;
    
    }
    
    
    // 自定义计算字符串长度的函数
    int stringLen(char value[]) {
        
        int count = 0;
    
        while (value[count] != '\0') {
        
            count ++;
    
        }
        
        return count;
    
    }
        
    
    

    字符串拼接

    使用内置方法strcat进行2个字符串拼接,将后者拼接到前者后面,前提是前者空余的长度要大于后者的长度,否则会报错

    使用内置方法strncat进行2个字符串拼接,可以指定将后者的前多少个字符与前者进行拼接

    // 字符串拼接
    char str1[20] = "hello";
        
    char str2[10] = " world";
        
    
    printf("str1拼接前 -->
         %s\n", str1);
                // str1拼接前 -->
         hello
    printf("str2拼接前 -->
         %s\n", str2);
                // str2拼接前 -->
          world
    strcat(str1, str2);
        
    printf("\n");
        
    printf("str1拼接后 -->
         %s\n", str1);
                // str1拼接后 -->
         hello world
    printf("str2拼接后 -->
         %s\n", str2);
                // str2拼接后 -->
          world
    
    // 使用 strncat 可以指定将后者的前多少个字符与前者进行拼接
    strncat(str1, str2, 3);
        		// 最后一个参数3表示指定str2的前多少个字符拼接到str1后面
    printf("str1拼接后 -->
         %s\n", str1);
                // str1拼接后 -->
         hello world wo
    printf("str2拼接后 -->
         %s\n", str2);
                // str2拼接后 -->
          world
    

    字符串拷贝

    strcpy 函数会将源的数据拷贝到目录中,并且会覆盖掉目标中原有的数据,目标的长度必须能够存放拷贝的数据,长度不够会报错

    strncpy 函数在strcpy函数的基础之上,增加一个参数,可以指定拷贝几个字符0

    // 将str2中的内容拷贝到str1中
    char str1[20] = "hello";
        
    char str2[] = " world!";
        
    
    printf("str1 拷贝前 -->
         %s\n", str1);
              // str1 -->
         hello
    printf("str2 拷贝前 -->
         %s\n", str2);
              // str2 -->
          world!
    strcpy(str1, str2);
        
    printf("str1 拷贝后 -->
         %s\n", str1);
              // str1 -->
          world!
    printf("str2 拷贝后 -->
         %s\n", str2);
              // str2 -->
          world!
    
    // strncpy 函数在strcpy函数的基础之上,增加一个参数,可以指定拷贝几个字符
    char str3[20] = "hello";
        
    char str4[] = "_world!";
        
    strncpy(str3, str4, 2);
        
    printf("str3 拷贝后 -->
         %s\n", str3);
              // str3 拷贝后 -->
         _wllo
    printf("str4 拷贝后 -->
         %s\n", str4);
              // str4 拷贝后 -->
         _world!
    

    字符串比较

    strcmp 会对传入的字符串进行比较,比较完毕后会返回一个整型的值

    /*
    	int result = strcmp(str1, str2)
    	如果result等于0,证明两个字符串相等
    	如果result小于0,证明str1小于str2
    	如果result大于0,证明str1大于str2
    */
    
    char str1[] = "abc";
        
    char str2[] = "abc";
        
    int result = strcmp(str1, str2);
        
    printf("result -->
         %i\n", result);
          // result -->
         0
    
    char str1[] = "ab1";
        
    char str2[] = "abc";
        
    int result = strcmp(str1, str2);
        
    printf("result -->
         %i\n", result);
          // result -->
         -50
    
    char str1[] = "absadsa";
        
    char str2[] = "abc";
        
    int result = strcmp(str1, str2);
        
    printf("result -->
         %i\n", result);
          // result -->
     16
    

    字符串数组

    如果想存储一堆字符串可以使用字符串数组,字符串数组就是二维数组

    char names[5][20] = {
    
    	"zhangsan",
    	"lisi",
    	"wangwu",
    }
        
    

    总结

    以上就是关于C语言字符串的内容介绍,上述示例具有一定的借鉴价值,有需要的朋友可以参考学习,希望对大家学习C语言字符串有帮助,想要了解更多C语言字符串的内容,可以继续浏览网络其他相关的文章。

    文本转载自脚本之家

    声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


    若转载请注明出处: C语言字符串的输入与输出,及常用方法是什么?
    本文地址: https://pptw.com/jishu/655281.html
    常见的七种Java排序算法原理是什么,怎样实现? C语言的野指针是什么意思,有何用处?

    游客 回复需填写必要信息