这是我更改字符大小写的函数的代码。例如“ABC”会变成“abc”,反之亦然。
char *flipCase(const char *src){
char *output;
output = malloc(sizeof(src));
//Copy source to output
strcpy(output,src);
int i = 0;
//Check if the case is lower or upper
while(output[i] != '\0')
{
//Check if it's alphabetic
if (isalpha(output[i]))
{
//if it's upper case
if (isupper(output[i]))
{
//Convert to lower case and increment i
output[i]= tolower(output[i]);
i++;
}
//if it's lower case
if (islower(output[i]))
{
//Convert to upper and increment i
output[i]=toupper(output[i]);
i++;
}
}
//Else, skip it
else
{
i++;
}
}
return output;}
大多数时候,这对我来说似乎很好。然而,当它用“Hello World, How are you?”进行测试时。我期待“你好,世界,你好吗?” 但是我的程序给出了“你好,世界,你好吗1” 注意最后的“1”而不是“?”。是什么导致了问题?我该如何解决?