这在行524:35上给了我一个错误,它说
strcap[i] = tolower (str [i]);
说从int转换为char可能会改变它的值,我在源代码中有一些错误,因此,如果我可以修复此错误,那么其他错误将是小菜一碟。有人可以简单地向我解释吗?我对此很陌生..谢谢!
char *imccapitalize( const char *str )
{
static char strcap[LGST];
int i;
for( i = 0; str[i] != '\0'; i++ )
strcap[i] = tolower( str[i] );
strcap[i] = '\0';
strcap[0] = toupper( strcap[0] );
return strcap;
}
最佳答案
实际上,许多C“字符”函数都将int
作为字符并返回。 (这样做是因为它们可以返回诸如EOF
之类的特殊值,并且还因为这种做法在人们注意到类型安全性之前是一成不变的。)toupper
和tolower
是其中两个功能。 tolower
的declaration为:
int tolower(int c);
因此,要摆脱这些警告,您必须强制转换返回值:
strcap[i] = (char) tolower( str[i] );