• 编程基础C—— 详谈字符串 与 字符数组的定义与应用


    字符串存储以 ’’ 结束,如果一段存储区域有多个 ’’ ,则取第一个为结束标志
     
    使用字符串处理函数:
     
    (1)在使用字符串处理函数时,应当在程序文件的开头用
             #include <string.h>
     
    (2)puts 每次只能打印一个字符串,且自带回车。puts(字符数组地址)
     
    (3)gets 可以接收空格,但是不能录入多个字符串。gets(字符数组地址)
     
    (4)当我们用scanf输入一个字符串时,会将空格作为字符串的结束符。
     
    如果利用一个 scanf 函数输入多个字符串,则应在输入时以空格分隔,
     
    例如:
     
    char str1[5],str2[5],str3[5];
    scanf(“%s%s%s”,str1,str2,str3);
    输入数据:
    How are you? 回车
     
    5)strlen(字符数组) 测试字符串长度函数,结果值为字符串的实际长度(不包括在内)值的类型为(unsigned long int)无符号长整形。
     
    (6)strcpy(str1,str2) 字符串复制函数 ,将str2复制给str1,str1,str2也可以是字符串。
     
    (7)strcat (str1,str2)字符串串连接函数,将str2接到str1的后面,结果存放在str1中。
     
    (8)strcmp(str1,str2)字符串比较函数,将两个字符串自左至右逐个字符比较(按ASCII码值大小比较),直到出现不同的字符或遇到’’为止返回值为整形数值。if(strcmp(str1,str2)>0 / =0 / <0).
     字符串比较函数逐个字符(ASCII)进行比较,比较的结果就是差值,值>0时 前>后,=0 时 前=后,<0 时 前<后
     
    例;
     
    //自定义函数,实现字符串的比较,不能用strcmp;
    #include <stdio.h>
    void funstrcmp(char a[],char b[])
    {
        int i=0,result = 0;
        for(i=0;i<5;i++)
           
        {
           if  ((a[i]!=b[i])&&(a[i]!='')&&(b[i]!=''))
        {
           result = a[i]-b[i];
          
        }
    }
        printf("result = %d",result);
    }
    int main(int argc, const char * argv[])
    {
       char a[]="abcd";
       char b[]="abde";
       funstrcmp(a,b);
        return 0;
    }
     
    //自定义函数,实现字符串的拷贝,不能用strcpy;
    #include <stdio.h>
    #include <string.h>
    void myStrCpy(char b[],char a[]){
        for (int i = 0; i <  strlen(a); i++) {
            b[i] = a[i];
        }

            b[strlen(a)] = '';
      }
    int main(int argc, const char * argv[]) {
        char a[] = "my";
        char b[20];
        myStrCpy(b, a);
        printf("b = %s ",b);
        return 0;
    }
    应用实例:
    1.输入一个字符串,然后得到其倒序形式,并输出,如原始字符串是:abc,处理之后输出cba
    第一种方法:
    #include<stdio.h>
    #include<string.h>
    int main()
    {
        printf("请输入字符串:");
        char a[100];
        char b[100];
        gets(a);
        for (int i=0;i<=strlen(a);i++) {
            b[i]=a[strlen(a)-1-i];
        }
          b[strlen(a)]=‘’;
          printf("倒序字符串为:");
         puts(b);
          return 0;
    }
    第二种方法:
    #include <stdio.h>
    #include <string.h>
      void fun(char a[])
    {
        char t;
        unsigned long int j,i;
            j = strlen(a);
        for(i =0;i< j/2;i++)
        {
            t=a[i];
            a[i]=a[j-1-i];
            a[j-1-i]=t;
        }
         printf("倒序为:");
         puts(a);
     }
    int main(int argc, const char * argv[])
    {
        char b[100];
        printf("请输入一个字符串:");
        gets(b);
        fun(b);
        return 0;
    }
    2.输入一个字符串,然后将其中的单词个数统计出来并打印
    #include <stdio.h>
    #include <string.h>
     int main(int argc, const char * argv[])
    {
            int n=1;
            unsigned long int i=0;
            char a[100];
            printf("请输入一个字符串:");
            gets(a);
        for(i=0;i<strlen(a)+1;i++)
        {
            if(a[i]==' '&&a[i+1]!=' ')
                  n++;
        }
        printf("单词的个数为:%d",n);
            return 0;
    }
     
    结合实例希望对大家学习字符串 与 字符数组有所帮助!
    感谢您的访问! 若对您有帮助或有兴趣请关注博客:http://www.cnblogs.com/Rong-Shengcom/
  • 相关阅读:
    C#(99):串口编程 System.IO.Ports.SerialPort类
    FastReport.Net的使用
    MongoDB(07):查询文档
    MongoDB(06):文档操作
    HIVE metastore Duplicate key name 'PCS_STATS_IDX' (state=42000,code=1061)
    RSync实现文件备份同步
    env: /etc/init.d/redis: Permission denied
    Multiple MySQL running but PID file could not be found
    centos 6.5卸载Mysql
    web应用性能测试-Tomcat 7 连接数和线程数配置
  • 原文地址:https://www.cnblogs.com/Rong-Shengcom/p/4931266.html
Copyright © 2020-2023  润新知