Chinaunix首页 | 论坛 | 博客
  • 博客访问: 170237
  • 博文数量: 78
  • 博客积分: 30
  • 博客等级: 民兵
  • 技术积分: 287
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-24 02:49
文章分类
文章存档

2013年(23)

2012年(55)

分类: C/C++

2013-05-13 14:03:59

最近在学shell编程,在网上看到tr '[:upper:]' '[:lower:]' 可以把字符串中大写字母转换成小写字母,我就在这个的基础上写了一个脚本来自己学习学习
  1. #!/bin/bash
  2. #name: upper_to_lower.sh
  3. #the function is trun uper to lower
  4. #like ABCd to abcd

  5. haveuppernumber()
  6. {
  7.     #test if the string have upper number
  8.     str="$(echo $1 | tr '[:upper:]' '[:lower:]')"
  9.     if [ "$str" != $1 ] ; then #get some problem
  10.         echo "[#have upper number,and i well trun them to lower:#]"
  11.         return 1 #have upper number
  12.     else
  13.         return 0 #no upper number
  14.     fi
  15. }

  16. if [ $# -ne 1 ] ; then
  17.     echo "Usage: $0 " >&2
  18.     exit 1
  19. fi

  20. if ! haveuppernumber $1 ; then #when if is 0 it run?
  21. #if [ 0 ] ; then #in shell true return 0 ,false return 1
  22.     echo $1 | tr '[:upper:]' '[:lower:]' #it can turn the UPPER number to lower
  23. #    echo $1 | tr '[:lower:]' '[:upper:]' #it can turn the lower number to UPPER
  24. else
  25.     echo "[#no upper number:#]"
  26.     echo $1
  27. fi

  28. exit 0
功能说明:当输入”./upper_to_lower.sh AaBbCcdd“时会先判断输入格式是否正确,然后判断字符串中是否有大写字母如果有显示"[#have upper number,and i well trun them to lower:#]"和转换成小写字母后的字符串;如果没有大写字母显示"[#no upper number:#]"和小写字符串。
然后又试着用c语言实现相同的功能,如下:
  1. #include<stdio.h>
  2. #include<stdlib.h>

  3. int haveuppernumber(char *p)
  4. {
  5.     char*q=p;
  6.     
  7.     for(;*q!='\0';q++)
  8.     {
  9.         if(*q>='A'&&*q<='Z')
  10.         {
  11.             printf("[#have upper number and i will turn them to lower #]\n");
  12.             return 1;
  13.         }
  14.     }
  15.     printf("[#no upper number#]\n");
  16.     return 0;
  17. }
  18. void turntolower(char *p)
  19. {
  20.     for(;*p != '\0';p++)
  21.     {
  22.         if(*p>='A' && *p<='Z')
  23.         {
  24.             *p+=' ';
  25.         }
  26.     }
  27. }

  28. int main(int argc , char *argv[])
  29. {
  30.     char *p;
  31.     p=argv[1];

  32.     if(argc != 2)
  33.     {
  34.         printf("Usage : %s \n",argv[0]);
  35.         exit(-1);
  36.     }
  37.     if(haveuppernumber(p))
  38.     {
  39.         turntolower(p);
  40.         printf("%s\n",argv[1]);
  41.     }
  42.     else
  43.     {
  44.         printf("%s\n",argv[1]);
  45.     }
  46.     return 0;
  47. }
阅读(1181) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~