接受一个单词并将每个字母打印在新行上的程序(c)

接受一个单词并将每个字母打印在新行上的程序(c),c,arrays,newline,fgets,C,Arrays,Newline,Fgets,我必须用c语言编写一个程序,接受一个没有空格的单词,并在新行上打印出每个字母。但是,我必须使用FGET。我写了这个程序: #include <stdio.h> #define MAX_LINE 4096 int main(void) { int i; char array[MAX_LINE]; printf("Enter a string: "); fgets(array,MAX_LINE,stdin); for(i=0; arra

我必须用c语言编写一个程序,接受一个没有空格的单词,并在新行上打印出每个字母。但是,我必须使用FGET。我写了这个程序:

#include <stdio.h>
#define MAX_LINE 4096

int main(void) {
    int i;
    char array[MAX_LINE];

    printf("Enter a string: ");
    fgets(array,MAX_LINE,stdin);
        for(i=0; array[i]!='\0'; i++){  
            printf("%c\n",array[i]);

       }
       return 0;
}
但它会在单词末尾多打印两行。我不明白为什么

fgets读取换行符并将其存储在缓冲区中

另见此处: 如果缓冲区中有足够的空间,则将换行符读入缓冲区。您可以修改条件以适应以下情况:

for(i=0; array[i] != '\n' && array[i] != '\0'; i++) {
男:

fgets从流中最多读取一个小于大小的字符,并将它们存储到s指向的缓冲区中。EOF或换行符后,读取停止。如果新行被读取,它将被存储到缓冲区中。缓冲区中最后一个字符后存储了终止的空字节“\0”