这是一个将字符串的字母转换为大写或小写的程序。我不知道这段代码有什么问题。运行它时,它会忽略字符串的第一个字母。就像我给字符串“ Lets go out”,输出为
转换为大写字母时,“ ETS GO OUT”(“ L”被排除,这是不应该发生的),转换为小写字母时,“ TS out”((“ le”被排除,这是不应该发生的)。我使用代码块。请有人帮助我:'(
#include<ctype.h>
#include<stdio.h>
int main()
{
char str[80],*p;
printf("Enter A String\n");
gets(str);
p=str;
while(*p)
*p++=toupper(*p);
printf("After uppercase conversion: %s\n",str);
p=str;
while(*p)
*p++=tolower(*p);
printf("After lowercase conversion: %s\n",str);
return 0;
}
最佳答案
您的while
循环等效于以下代码:
while (*p)
{
*p = tolower( *(p+1) );
p = p+1;
}
因此,要解决此问题,您可以使用例如
for
循环,如下所示:#include<ctype.h>
#include<stdio.h>
int main()
{
char str[80],*p;
printf("Enter A String\n");
gets(str);
for (p = str; *p != '\0'; p++)
*p = toupper(*p);
printf("After uppercase conversion: %s\n",str);
for (p = str; *p != '\0'; p++)
*p = tolower(*p);
printf("After lowercase conversion: %s\n",str);
return 0;
}
关于c - 用C编写的程序未提供正确的输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46774141/