在使用循环向数组对应元素输入字符时,do while循环可以用while替换吗(语言-c语言)

请问在使用循环向数组对应元素输入字符时,这个do while循环可以用while替换吗?我尝试替换但是一直没有跳出循环,不知道是不是我修改的有问题。刚刚开始学习C语言,想过是不是换行符在输入队列的原因,但是一知半解实在不知道怎么回事,如果可以替换,正确的程序是什么样的呢,希望有朋友为我解答一下,特别感谢!

img

img

img

#include <stdio.h>

#define SIZE 255

int main() {
  char ch[SIZE];
  int i = 0;
  printf("请输入一行字符:\n");
  while (i < SIZE && scanf("%c", &ch[i]) == 1 && ch[i] != '\n')
    i++;
  ch[i] = '\0';
  printf("该行字符倒序打印为:\n");
  for (i--; i >= 0; i--)
    printf("%c", ch[i]);
  printf("\n");
  return 0;
}

scanf读不到换行符,改成使用getchar
scanf("%c", &ch[i])改成ch[i] = getchar()