一波C语言字符数组实用技巧集锦

 更新时间:2016年04月25日 15:47:37   作者:hzy3774  
这篇文章主要介绍了一波C语言字符数组实用技巧集锦,包括许多字符的转换与提取等基本操作示例,需要的朋友可以参考下

字符数组倒序

#include <stdio.h> 

 void daoxu(char str[]){ 
   int i; 
   char temp; 
   for(i = 0; i < strlen(str) / 2 ; i ++){ 
     temp = str[i]; 
     str[i] = str[strlen(str) - i-1]; 
     str[strlen(str) - i-1] = temp; 
   } 
 } 

单词计数   

 int wordCount(char str[]){ 
   int i; 
   int count = 0; 
   int word = 0; 
   for (i = 0 ; str[i] != '\0' ; i ++) 
   { 
     if (str[i] == ' ') 
     { 
       word = 0; 
     }else if (word == 0) 
     { 
       word = 1; 
       count ++; 
     } 
   } 
   return count; 
 } 

字符大写转小写

 void mylwr(char str[]){ 
   int i; 
   for (i = 0 ; str[i] != '\0' ; i ++) 
   { 
     if (str[i] >= 'A' && str[i] <= 'Z') 
     { 
       str[i] += 'a' - 'A'; 
     } 
   } 
 } 

字符小写转大写

 void myupr(char str[]){ 
   int i; 
   for (i = 0 ; str[i] != '\0' ; i ++) 
   { 
     if (str[i] >= 'a' && str[i] <= 'z') 
     { 
       str[i] -= 'a' - 'A'; 
     } 
   } 
 } 

字符数组计算字符串长度   

 int mylen(char str[]){ 
   int len; 
   for (len = 0 ; str[len] != '\0' ; len ++); 
   return len; 
 } 

字符串连接 

 void mycat(char str1[],char str2[]){ 
   int i,j; 
   for (i = 0 ; str1[i] != '\0' ;i++); 
   for (j = 0 ; str2[j] != '\0' ; j ++) 
   { 
     str1[i + j] = str2[j]; 
   } 
   str1[i + j] = '\0'; 
 } 

指定长度串接 

void myncat(char str1[],char str2[], int len){ 
   int i,j; 
   for(i = 0; str1[i] != '\0'; i++); 
   for (j = 0; j < len; j++) 
   { 
     str1[i + j] = str2[j]; 
   } 
   str1[i + j] = '\0'; 
 } 

字符数组拷贝     

 void mycpy(char dst[],char src[]){ 
   int i = 0; 
   do  
   { 
     dst[i] = src[i]; 
   } while (src[i++] != '\0'); 
 } 

字符数组指定长度拷贝     

 void myncpy(char dst[],char src[], int len){ 
   int i; 
   for (i = 0; i < len; i++) 
   { 
     dst[i] = src[i]; 
   } 
   dst[i] = '\0'; 
 } 

找出句子中最长的单词 

 void longest(char dst[],char src[]){ 
   int i = 0,j; 
   int count =0; 
   int max = -1; 
   do  
   { 
     if (src[i] ==' ' || src[i] == '\0') 
     { 
       if (count > max) 
       { 
         max = count; 
         for (j = 0; j < count; j++) 
         { 
           dst[j] = src[i - count + j]; 
         } 
         dst[j] = '\0'; 
       } 
       count = 0; 
     }else{ 
       count++; 
     } 
   } while (src[i++] != '\0'); 
 } 

从字符串中提取整形数字

#include <stdio.h> 
 
int getint(char str[], int a[]){//从字符串中提取数字并放在数组中 
  int i = 0; 
  int w = 0; 
  int c = 0; 
  int j, k; 
  do  
  { 
    if (str[i] > '0' && str[i] <= '9') 
    { 
      w++; 
    }else if (w) 
    { 
      j = 0; 
      for (k = w; k > 0; k--) 
      { 
        j *= 10; 
        j += str[i - k] - '0'; 
      } 
      w = 0; 
      a[c] = j; 
      c++; 
    } 
  } while (str[i++] != '\0'); 
  return c; 
} 
 
void main(){ 
  char str[100]; 
  int a[100]; 
  int i, j; 
  gets(str); 
  i = getint(str,a); 
  for (j = 0; j < i; j++) 
  { 
    printf("%d ",a[j]); 
  } 
} 

整形、字符数组型转换

#include <stdio.h> 
#include <stdlib.h> 
 
int sumof1(int x)//求一个数转换成二进制以后1的个数 
{ 
  int countx = 0; 
  while(x) 
  { 
    countx ++; 
    x &= x-1; //每位与一次x - 1;就能消掉最后一个1 
  } 
  return countx; 
} 
 
void main(){ 
 
  char c[10]; 
  int i = 999; 
 
  itoa(i, c, 10);//以10进制转换成字符数组 
  puts(c); 
 
  itoa(i, c, 16);//以16进制转换成字符数组 
  printf("0x%s\n", c); 
 
  itoa(i, c, 8);//以8进制转换成字符数组 
  printf("0%s\n", c); 
 
  itoa(i, c, 2);//以2进制转换成字符数组 
  puts(c); 
 
  i = atoi(c);//再将字符串转成整形 
  printf("%d\n", i); 
 
  printf("%d\n", sumof1(i));//以2进制表示时1的个数 
} 

2016425154607514.jpg (257×176)

相关文章

  • C语言值传递和地址传递详解

    C语言值传递和地址传递详解

    大家好,本篇文章主要讲的是C语言值传递和地址传递详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2022-01-01
  • 使用C语言绘制柱形图的示例代码

    使用C语言绘制柱形图的示例代码

    常用的统计图有条形图、柱形图、折线图、曲线图、饼图、环形图、扇形图,这篇文章主要为大家介绍了C语言中绘制条形图和柱形图的方法,需要的可以参考下
    2024-02-02
  • C语言中数据的存储详解

    C语言中数据的存储详解

    这篇文章主要介绍了C语言中数据的存储详解的相关资料,需要的朋友可以参考下
    2023-08-08
  • 嵌入式C实战项目开发技巧:对一个有规律的数组表进行位移操作的方法

    嵌入式C实战项目开发技巧:对一个有规律的数组表进行位移操作的方法

    今天小编就为大家分享一篇关于嵌入式C实战项目开发技巧:对一个有规律的数组表进行位移操作的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • C++变量和基本类型详解

    C++变量和基本类型详解

    这篇文章主要介绍了C++变量和基本类型,,一定要注意局部变量与全局变量的作用范围,需要的朋友可以参考下,希望能够给你带来帮助
    2021-10-10
  • C语言互换最大值与最小值的位置

    C语言互换最大值与最小值的位置

    大家好,本篇文章主要讲的是C语言互换最大值与最小值的位置,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • C++ opencv实现在图片上画一条线示例代码

    C++ opencv实现在图片上画一条线示例代码

    这篇文章主要为大家介绍了C++ opencv实现在图片上画一条线的示例代码,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • C++之boost::array的用法

    C++之boost::array的用法

    这篇文章主要介绍了C++之boost::array的用法,以实例的形式简单讲述了静态数组的容器boost::array的使用技巧,具有一定的参考借鉴价值,需要的朋友可以参考下
    2014-10-10
  • C++实现宿舍管理查询系统

    C++实现宿舍管理查询系统

    这篇文章主要为大家详细介绍了C++实现宿舍管理查询系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • 关于移位操作的一点重要说明

    关于移位操作的一点重要说明

    下面小编就为大家带来一篇关于移位操作的一点重要说明。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12

最新评论