#include //strlen
#include //printf
#include //tolower
int main()
{
int i;
char string[] = "THIS IS A STRING";
printf("%s\n", string);
for (i = 0; i < strlen(string); i++)
{
string[i] = tolower(string[i]);
}
printf("%s\n", string);
printf("\n");
}
string[i]是char型,而tolower(string[i])是int型。
有朋友指出我上一个问题中这样编写是错的,我觉得也是错的。但是之前这样用的时候并没报错。并且网上很多举例如何大小写转换的时候,都这样赋值。
这样是可以的,在C语言中,字符和数字可以转换,不信你可以使用int a = 65;printf("%c %c",a,a);实验。
tolower 是隐式类型转换,不会有溢出
在C语言中,字符和数字可以转换
这样在c语言中是可以的 你可以试试看,结果ok的
tolower 把字符转换成小写字母,非字母字符不做出处理, 在VC6.0可以是ctype.h或者stdlib.h,常用ctype.h
i = 0;
while(string[i])
{
string[i] = tolower(string[i]);
i++;
}
这样或许好点?
你的代码在c语言中是合法的