我最终得到了一些角色。虽然它不会一直发生。有人可以告诉你如何纠正错误吗?
main()
{
char ar[100];
char br[100];
gets(ar);
int c=strlen(ar);
int b=0,d=0;
while(b<c)
{
br[d]=ar[b];
if(ar[b]==' ')
{
while(ar[b]==' ')
{
b++;
}
b--;
}
b++;
d++;
}
printf("\n");
puts(br);
getch();
}
输入:
Hello this is vinay.
预期产出:
Hello this is vinay.
我得到的输出:
Hello this is vinay.*
*
是一些右箭头角色,不知道如何描述它。
答案 0 :(得分:3)
你忘了null终止你的字符串,所以当打印字符串时,printf
停在内存的末尾而不是字符串的末尾,这对于用户来说意味着打印垃圾,这里代码更正了:
int main() //main is supposed to return a int
{
char ar[100];
char br[100];
gets(ar);
int c=strlen(ar);
int b=0,d=0;
while(b<c)
{
br[d]=ar[b];
if(ar[b]==' ')
{
while(ar[b]==' ')
{
b++;
}
b--;
}
b++;
d++;
}
br[d] = '\0'; //null terminate the string. `br[d]=0;` work too.
printf("\n");
puts(br);
getch();
return 0; //Convention for "all is good"
}
答案 1 :(得分:-1)
Error will be somwhere here..b++; b--; b++;
if(ar[b]==' ')
{
while(ar[b]==' ')
{
b++;
}
b--;
}
b++;