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

时间:2018-08-04 14:36:13

标签: c arrays for-loop structure scanf

#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循环之外却无法正常打印并打印出来。

1 个答案:

答案 0 :(得分:1)

解决问题的方法

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

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

您对代码的其他评论

始终检查scanf的返回值。它应该看起来像这样:

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 {