输不了完整的句子,且必须也只能输入11个字符
#include
#define ARR_SIZE 80
void Squeeze(char str[],char ch);
int main()
{
/*********begin*********/
char str[ARR_SIZE];
char ch;
int i=0;
for(i=0;str[i]!='\0';i++)
{
scanf("%c",&str[i]);
}
for(i=0;str[i]!='\0';i++)
printf("%c",str[i]);
printf("\n");
fflush(stdin);
scanf("%c",&ch);
printf("%c\n",ch);
Squeeze(str,ch);
return 0;
/*********end*********/
}
void Squeeze(char str[],char ch)
{
/*********begin*********/
int i=0;
char b[80]; //存放删除指定的字符后的字符串
int j=0; //指向b数组
for(i=0;str[i]!='\0';i++)
{
if(str[i] !=ch) //拷贝
{
b[j] = str[i];
j++;
printf("%d^\n",j);
}
}
b[j]='\0';
printf("%s",b);
/*********end*********/
}
上面代码就是
for(i=0;i<ARR_SIZE;i++)
{
scanf("%c",&str[i]);
if(str[i]=='\n') //回车结束输入
break;
}
str[i]='\0'; //字符串最后的结束符\0
for(i=0;str[i]!='\0';i++)
{
scanf("%c",&str[i]);
}
与语言无关,做事逻辑或做事方法不正确,向程序输入数据,应该以输入信息作为结束条件,上面代码逻辑是先判断str[i]!='\0',此时str[i]存储的程序的内部值,无法感知外部信息,以此做出的选择是你不能控制的
for(i=0;;i++)
{
scanf("%c",&str[i]);//先接收数据
if(str[i]=='\n' )break ;//进行判断
}
str[i+1]='\0';//str作为字符串使用,必须添加'\0'