运行 scanf 在 for 循环中出现逻辑错误,我该如何解决?

Logical error while running scanf in for loop, how do i fix it?

#include <stdlib.h>
#include <stdio.h>

struct card
{
   char Top;
   char Bottom;
};

int main()
    {
    int T,i;
    struct card cards[4];
    scanf("%d", &T);
    for(i=0; i<3; i++)
        {
            scanf("%c%c%c", &cards[0].Top, &cards[1].Top, &cards[2].Top);
            printf("%c%c%c\n", cards[0].Top, cards[1].Top, cards[2].Top);
        }
return 0;
}

它没有正确打印这三个字符,在 for 循环之外它扫描并打印正常。

解决你的问题

scanf 行更改为此。 (注意%c前的空格)

scanf(" %c %c %c", &cards[0].Top, &cards[1].Top, &cards[2].Top);

对您的代码的其他评论

始终检查 scanf 中的 return 值。它应该是这样的:

if(scanf(" %c %c %c", &cards[0].Top, &cards[1].Top, &cards[2].Top) != 3) {
     // Print error message and exit program or something else
} else {