我最终得到了一些角色。尽管这种情况并不总是发生。有人可以告诉我如何纠正错误吗?
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.*
*
是一些右箭头字符,不知道如何描述它。
最佳答案
您忘记以 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"
}
关于c - 替换句子中的多个空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23497518/