C语言写了一个利用ctype.h头中tolower()函数把字符串中所有大写字母转为小写的函数,无法实现。
char * Tolower(const char * src)
{
char * dest = NULL;
while (*src)
{
*dest = tolower(*src);
src++;
dest++;
}
*dest = '\0';
return dest;
}
不报错。但程序结束异常,返回3221225477。
在网上搜了搜,大多说是野指针的问题,我试着初始化为空指针还是不行。
预计结果
类似于
printf("%s", Tolower("aBcDeFg"));
参数不可修改,把字母转换小写后赋给dest然后返回。
希望大家能够帮助我,多谢。
供参考:
#include<stdio.h>
#include<ctype.h>
#include<string.h>
#include<malloc.h>
char * Tolower(const char * src)
{
char * dest = (char*)malloc(sizeof(char)*(strlen(src)+1));
char * p_dest = dest;
while (*src)
{
*p_dest = tolower(*src);
src++;
p_dest++;
}
*p_dest = '\0';
return dest;
}
int main()
{
printf("%s",Tolower("aBcDeFg"));
return 0;
}