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的参数就退化为指针了,因为数组作为参数传给函数时传的是指针而不是数组,传递的是数组的首地址。