运行 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 {
#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 {