我想将字符串中的多个空格替换为单个空格,但是我的以下代码不起作用。逻辑上出了什么问题?
#include<stdio.h>
#include<string.h>
main()
{
char input[100];
int i,j,n,z=0;
scanf("%d",&n);
z=n;
for(i=0;i<n;i++)
scanf("%c",&input[i]);
for(i=0;i<n;i++)
{
if(input[i]==' ' && (input[i+1]==' ' || input[i-1]==' '))
{
--z;
for(j=i;j<n;j++)
input[j]=input[j+1];
}
}
for(i=0;i<z;i++)
printf("%c",input[i]);
printf("\n");
}
scanf
会出现一些问题。建议使用gets
或者scanf("%s",input)
。 - Navnath Godseif(input[i]==' ' && (input[i+1]==' ' || input[i-1]==' '))
- BLUEPIXYgets()
。因为它已经从2011年起被C标准废弃,无法安全易用。建议使用fgets()
来读取交互式用户输入,这是完全合理的选择。 - pmg