zoukankan      html  css  js  c++  java
  • C语言指针与字符串(高阶篇三十二)

      字符串的输入输出

        printfscanf

          格式控制符为%s        /*s为string的意思*/

          与字符型数据处理不同的是,%s后面的变量一定是数组名或是字符指针

          如:

            char *pc=”string!”;

            printf(“%s\n”,pc);

      字符数组与指针

        定义格式:区别

          char *pc=”string!”;

          char s[ ]=”string!”;

     

        赋值:区别

          pc=”string!”;      /*指针可以在运算中赋值*/

          s=”string!”;      /*数组不允许*/

        注意:

          ※字符指针在运算过程中可以用上面的方式赋值,但是用scanfgets这类函数从键盘获取字符串时一定要令其先指向某个数组

            如:scanf(“%s”,pc),运行时会报错,

          ※可以通过移动指针指向串中某个字符,如:

            printf(“%c”,*(pc+2));

            会输出r

          ※双引号也是一种运算符,它会求出一串字符的首地址。上面的”string!”相当于用&求出’s’的地址赋值给pc。

          ※字符数组(字符串)初始化,系统会自动按顺序填充数组元素。平时运行时不能用=号给数组赋值,因为数组名是只读的。

      字符串数组与指针

        所有的字符串都是一维数组,那“字符串数组”肯定是二维数组。

        字符串之间的运算都要通过字符串函数

        程序1

          选择排序法给5个字符串从小到大排序

    // 32-1排序法给5个字符串从小到大排序.c
    
    #include <stdio.h>
    #include <string.h>
    
    void swap(char *s1, char *s2)
    {
        char s3[10];      //字符串交换
        strcpy(s3, s1);
        strcpy(s1, s2);
        strcpy(s2, s3);
    }
    
    
    main()
    {
        char str[5][10];  //定义五个串,不超过十个字符   \0 占一个
    
        printf("请输入五个字符串:\n");
        for (int i = 0; i < 5; i++)
            gets(str[i]);    //输入五个字符串
    
        for (int i = 0; i < 5; i++)
        {
            for (int j =i+1; j < 5; j++)
            {
                if (strcmp(str[i],str[j])>0)   //如果 str[i]大于str[j] 就会返回1,否则就是0;
                {
                    swap(str[i], str[j]);     //交换变量 
                }
            }
        }
    
        //输出字符
        printf("输出排序后的字符串:\n");
        for (int i = 0; i < 5; i++)
        {
            puts(str[i]);
        }
    }

        字符串比较规则:

          比较的时候,从字符串左边开始,依次比较每个字符,直到出现差异、或者其中一个串结束为止。

          比如ABC与ACDE比较,第一个字符相同,继续比较第二个字符,由于C的ASCII码比B大,所以不再继续比较,结果就是后面一个串大。

          再如ABC与ABC123比较,比较三个字符后第一个串结束,所以就是后面一个串大。

          所以,长度不能直接决定大小,字符串的大小是由左边开始第一个差异字符决定的。

  • 相关阅读:
    Apache Ant 1.9.1 版发布
    Apache Subversion 1.8.0rc2 发布
    GNU Gatekeeper 3.3 发布,网关守护管理
    Jekyll 1.0 发布,Ruby 的静态网站生成器
    R语言 3.0.1 源码已经提交到 Github
    SymmetricDS 3.4.0 发布,数据同步和复制
    beego 0.6.0 版本发布,Go 应用框架
    Doxygen 1.8.4 发布,文档生成工具
    SunshineCRM 20130518发布,附带更新说明
    Semplice Linux 4 发布,轻量级发行版
  • 原文地址:https://www.cnblogs.com/httpcc/p/15519999.html
Copyright © 2011-2022 走看看