突然想到一个大小写字母转换的问题,于是动手写了一下。反复调试修改了好几次才写好,真是对自己不满!
这种几乎只有在笔试的时候会做到的题,居然。。。笔试的时候可是没有调试工具的!如果没依赖调试工具,估计就过不了了!!
代码如下:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char *Convert(char *strIn)
{
//int i=0;
char *strOut=(char*)malloc(strlen(strIn)+1);//记得分配空间!记得strlen跟sizeof区别,考虑'/0'
memset(strOut,0,strlen(strIn)+1);//记得初始化!
strcpy(strOut,strIn);
char *p=strOut;
while(*p)//!='/0')//注意区别while(p)与while(*P)的区别。如果用前者会溢出的,这种写法只有在判断链表节点时用,因为明确结尾 有个空指针结束。
{
if(*p>65&&*p<90)//记住重要的ASCII码 65 97等等。。
*p=char(*p+32);
p++;
}
return strOut;
}
int main()
{
char str[]="I am a GOOD student!";
char* temp=Convert(str);
printf("%s/n",temp);
free(temp);//added,这个很容易忘记的,笔试经常会注意看这个! 记住有malloc就有free!!!
//printf("%d/n",sizeof("abc"));
return 0;
}