这在行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之类的特殊值,并且还因为这种做法在人们注意到类型安全性之前是一成不变的。)touppertolower是其中两个功能。 tolowerdeclaration为:

int tolower(int c);


因此,要摆脱这些警告,您必须强制转换返回值:

strcap[i] = (char) tolower( str[i] );

07-28 06:47