我觉应该是野指针的调用问题。
main()
{
printf("%s",strlwr("HELLO"));
}
意思等同于:
main()
{
char *str = "HELLO";
printf("%s",strlwr(str));
}
这种调用也是错误的,以下是一个转小写的原形:
void* lower_string(char *string1)
{
while(*string)
{
if ( *string >= 'A' && *string <= 'Z' )
{
*string = *string + 32;
}
string++;
}
}
可以看到,如果string是一个野指针,则程序出错。
所以要为这个入口分配一个可用的指针,如:char a[]="HELLO"; \\a 也定义好自己的长度。
或者是这样:
main()
{
char a[]= (char*)malloc(sizeof(char)*10);
memcpy(a,"Hello",10);
printf("%s",strlwr(a));
if(a)
{free(a);a=NULL;}
}