8、大小写字母按转换及相关函数,sizeof与strlen不同

1、源程序
#include "stdio.h"
#include "ctype.h"

char fun(char ch)
{
if(ch>='A'&&ch<='Z')
    ch=ch+32;
if(ch>='a'&&ch<='u')
    ch=ch+5;
else if(ch>='v'&&ch<='z')
    ch=ch-21;
return ch;
}//fun

int main()
{
char c1,c2;
printf("please input a letter(A-Z): ");
c1=getchar();
if(isupper(c1))
   {
   c2=fun(c1);
   printf("\nThe letter \'%c\'change to \'%c\'\n",c1,c2);
   }//if
else printf("\nEnter(A-Z)!\n");
}
2、将给定程序中大写字母转换成小写字母后的第五个字母,若小写字母为v-z,则小写字母的值减21。

*p = *p +'a' - 'A';

3、程序较简单,只是要体现一种思想,即字符间如何转换,及如何处理超越界情况。
4、函数说明
a)原型:extern int isupper(int c);  
     用法:#include <ctype.h>
   功能:判断字符c是否为大写英文字母
   说明:当c为大写英文字母(A-Z)时,返回非零值,否则返回零。
b) 用法:#include <string.h>
      原型:size_t strlen ( const char * str );
      求字符串的长度。
c)函数名: toupper
功  能: 把字符转换成大写字母
用  法: int toupper(int c);
示例程序如下:
int main(void)
{
   int length, i;
   char *string = "this is a string";
   length = strlen(string);
   for (i=0; i<length; i++)
   {
      string[i] = toupper(string[i]);
   }
   printf("%s\n",string);
   return 0;
}
e) 

函数名: tolower

功  能: 把字符转换成小写字母

用  法: inttolower(int c);

程序例:

#include<string.h>

#include<stdio.h>

#include<ctype.h>

int main(void)

{

   int length, i;

   char *string = "THIS IS A STRING";

   length = strlen(string);

   for (i=0; i<length; i++)

   {

       string[i] = tolower(string[i]);

   }

   printf("%s\n",string);

   return 0;

}
f)原型:extern int isspace(int c);

用法:#include <ctype.h>

  功能:判断字符c是否为空白符

  说明:当c为空白符时,返回非零值,否则返回零。

     空白符指空格、水平制表、垂直制表、换页、回车和换行符。

 程序示例如下:

#include <ctype.h>
#include "stdio.h"
#include "string.h"
int main()
      {
        char s[]="Test Line 1\tend\nTest Line 2\r";
        int i;
    
        //clrscr();        // clear screen
        for(i=0;i<strlen(s);i++)
        {
          if(isspace(s[i])) putchar('.');
          else putchar(s[i]);
        }
        getchar();
        return 0;
      }

5、sizeof 和strlen 的区别比较

1). sizeof 操作符的结果类型size_t,它在头文件中typedef为unsigned int类型: typedef unsigned int size_t.

2). sizeof是是长度运算符,获得数据类型或是变量的长度,如果是数据类型,则返回数据类型大小,如果是用数组,则返回数组所占空间大小(单位是字节),strlen是计算字符串长度的函数,返回的是实际串长度(单位是位数),以char* 作参数 ,且必须是以'\0'结尾。

比如sizeof(int)=2,strlen(“abc”)=3.

3). sizeof在编译的时候就把计算过,strlen的结果要在运行的时候才能计算出来。

4). 数组做长度运算符sizeof的参数不退化。数组做函数strlen的参数就退化为指针了,因为数组作为参数传给函数时传的是指针而不是数组,传递的是数组的首地址。

发布了321 篇原创文章 · 获赞 31 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/hopegrace/article/details/104605696