zoukankan      html  css  js  c++  java
  • c语言字符串实例

    例子:涉及字符串、字符、指针、++等

    例一:字符串与字符

    #include <stdio.h>
    void reverse(char *str)
    {   
     char *end=str; 
     printf("%c
    ",*str); //结果是a   
     //printf("%s",*str); //以字符串输出,有错误 
      printf("%s
    ",str); //这样输出字符串是对的 
      printf("%c
    ",*end);
      printf("%s
    ",end); 
    printf("%c
    ",*str+1); //结果是b
    }
    int main() { reverse("abcdef"); return 0; }

     例二:统计字符串单词的个数【如何去掉空格的问题】

    #include "stdio.h"  
    int count_word(char *str); 
    void main()
    { 
       char str1[80];
       int sum=0;  
       puts("please enter a string");
       gets(str1); 
       sum=count_word(str1); //返回的count就是sum 
       printf("there are %d words in this sentence",sum);
     } 
      int count_word(char *str)
     { 
        int count,flag; 
        char *p; 
        count=0;
         flag=0; 
         p=str; 
          while(*p!='')/*当字符串没有到结尾的时候,重头到尾的循环*/
           { 
            if(*p==' ')/*假如字符串遇到空格,就将flag清零,同时可以过滤掉多余的空格*/ 
            flag=0; 
            else if(flag==0)/*当字符串不是空格时,假如flag为0,那么计算器加1,既是遇到空格后的第一个字符时*/
             { 
              flag=1;/*将flag标记回1,这样在遇到第一个字符后的字符时可以将他过滤掉,直到遇到空格时,在清零*/ 
              count++; //count就是统计单词数的变量。其实就是单词数的第一个字符,后面的字符都没有统计了 
              }
               p++; //继续加一。没有遇到空格的时候 。直到继续遇到空格或结尾的时候,才不加一了。 
             } 
         return count;
         
    } 

     例三:字符串反转

    #include <stdio.h>
    void reverse(char *str)
    {   
     char *z=str;
     char *end=str;
       char tmp;
        if(str)  
        {
            while(*end) 
            {             
                    ++end;           
            }
            --end;    //回退一个,找到null 
         while(str < end)
           {            
               tmp = *str;   
              *str++ = *end;
               *end--=tmp;  
           }          
       }  
     printf("%s",z); 
     
    }
    int main()
    {
      char s[]="1234546";
        reverse(s);
    //上面两句,如果直接这么写 reverse("123456789"); 就会有一个报警错误
        return 0;
    }

     例四:字符串长度

    #include <stdio.h>
    void reverse(char *p)
    {
        if( *p=='')
         return ;
         reverse(p+1);
         printf("%c",*p);    
    }
    int main()
    {
        reverse("abcdefghjklmn");
    //为4
        printf("%d",sizeof("abc"));
    //为3 
            printf("%d",strlen("abc"));
        printf("
    ");
        return 0;    
        
    }

    例五:字符串反转【用递归和指针的方式】

    #include <stdio.h>
    void reverse(char *p)
    {
        if( *p=='')
         return ;
         reverse(p+1);
         printf("%c",*p);    
    }
    int main()
    {
        reverse("abcdefghjklmn");
        printf("
    ");
        return 0;    
        
    }

     例六:统计字符串中每个单词的频率

    #include "stdio.h"
    #include "stdlib.h"
    #include "string.h"
    
    int main()
    {
    int i=0,t,dc=0,zm[26];
    char a[100];
    for(i=0;i<26;i++)
    zm[i]=0;
    gets(a);
    i=0;
    while(a[i]!='')
    { if(a[i]!=' ')
        {while(a[i]>' ' )
        {zm[a[i]-'a']++;i++;}
        dc++;}
    else
      i++;
    }             
    for(i=0;i<26;i++)
    if(zm[i]>0)
    printf("
    %c出现了%d次	",i+'a',zm[i]);
    printf("
    共有单词%d个
    ",dc); 
    system("pause");
    }

     例七:字符串长度与字符串在内存的长度

    #include "stdio.h"
    int main()
    {
        char str[6]="ABC";
        char a[]="Program";
        
        char *ptr="ABC";
        printf("str = "%s"
    ",str);
        printf("%d
    ",strlen(a));//长度就是长度,sizeof是内存中的长度 。所以下面那个是6,这个是7 
        printf("%d
    ",sizeof(a));//碰到第一个前面 ,并把计算在内。 
        
        printf("%d
    ",strlen(str));    
        printf("%d
    ",sizeof(str)); //根据初始化的6来定 
        
         printf("%d
    ",sizeof(ptr));//碰到第一个前面 ,并把计算在内。 
        
         
        printf("ptr="%s"
    ",ptr);
        return 0;
    }

     例八:在c语言中,字符串作为字符数组来考虑

    #include "stdio.h"
    int main()
    {
       
        char a[]="Program";    
        char b[]={'p','r','o','g','r','a','m'};//在c语言中,将字符串作为字符数组来处理。(c++中不是) 
        char c[]="'p','r','o','g','r','a','m'";
        printf("%d
    ",strlen(a));
        printf("%d
    ",sizeof(a));
        
        printf("%d
    ",strlen(b));    
        printf("%d
    ",sizeof(b));// 可以不要,相当于上面的数组初始化写死了,后面没有作为结束标记 
        
          
        printf("%d
    ",strlen(c));    
        printf("%d
    ",sizeof(c));
       
        return 0;
    }

     例九:如何存放字符串

    在C语言中,可以用两种方法表示和存放字符串:
    (1)用字符数组存放一个字符串
              char str[ ]="I love China";
    (2)用字符指针指向一个字符串
              char* str="I love China";
    对于第二种表示方法,有人认为str是一个字符串变量,以为定义时把字符串常量"I love China"直接赋给该字符串变量,这是不对的。
    C语言对字符串常量是按字符数组处理的,在内存中开辟了一个字符数组用来存放字符串常量,程序在定义字符串指针变量str时只是把字符串首地址(即存放字符串的字符数组的首地址)赋给str。
    两种表示方式的字符串输出都用
    printf("%s ",str);
    %s表示输出一个字符串,给出字符指针变量名str(对于第一种表示方法,字符数组名即是字符数组的首地址,与第二种中的指针意义是一致的),则系统先输出它所指向的一个字符数据,然后自动使str自动加1,使之指向下一个字符...,如此,直到遇到字符串结束标识符 " "。

    例十:截取字符串并依次输出

    #include "stdio.h"
    void AllSubstring(const char *str,int high)
    {
        int i, j, k;
        if(!str)
            return;
    
    for(i=0;i<=high;i++)
    {
        for(j=i; j<=high;j++)
        {
            for(k = i; k<=j; k++)
                printf("%c", str[k]);
            printf("	");
        } 
        printf("
    ");
        }
    }
    
    int main(void) {
        AllSubstring("abcde",4);
        return 0;
    }
  • 相关阅读:
    PHP如何获取内网IP
    开源的世界并不纯净
    在linux下玩上了第一人称射击
    终于,在linux下上网了
    我的理想
    vista是什么
    我傻了一阵子
    又是大端小端!!!
    谈谈最近的编程状态
    如何快速发布你的C++Builder程序
  • 原文地址:https://www.cnblogs.com/bluewelkin/p/4063265.html
Copyright © 2011-2022 走看看