求解,为什么putchar()输出的结果不正确。

求解,为什么putchar()输出的结果不正确。


#include<stdio.h>
#include<string.h>
int main()
{
    char str1[21], str2[21], str3[21];
    const int COUNT = 21;
    int i, j;
    printf("请输入一个长度不超过20的字符串(用getchar()实现):\n");
    for (i = 0; i < COUNT; i++)
    {
        str1[i] = getchar();
        if (str1[i] == '\n')
            break;
    }
    printf("请输入一个长度不超过20的字符串(用gets()实现):\n");
    gets(str2);
    printf("请输入一个长度不超过20的字符串(用带\"%%s\"scanf()实现):\n");
    scanf("%s", str3);
    printf("\n输出结果:\n用putchar()实现:");
    for (j = 0; j < i; j++)
        putchar("%c", str1[j]);
    printf("\n用带puts()实现:");
    if (strlen(str2) < 22)
        puts(str2);
    printf("用带\"%%s\"printf()实现:");
    printf("%s", str3);
    return 0;
}

img

putchar后面不用写"%c",直接写char的变量名str1[j]

putchar(str1[j]);