C语言数组输入和输出问题

我想用一个dowhile循环实现字符串的输入,但是为什么字符串的输出和长度会是这个?

img

while(n != '\n')

你在while里用getchar()的话,会又接收一个字符,判断这个字符是否为换行符啊。等于会跳过一个字符。
所以你代码要修改一下:

while((n=getchar()) != '\n')
      str[size++] = n;