输入不了完整句子,且必须也只能输入11个字符

问题遇到的现象和发生背景

输不了完整的句子,且必须也只能输入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*********/
}

运行结果及报错内容

img

img

我的解答思路和尝试过的方法

上面代码就是

我想要达到的结果 能完整输入I am a student.

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'