很多例子中都这样写。这样对吗

#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语言中是合法的