我已经阅读了很多其他堆栈溢出主题,但我仍然遇到很多麻烦。我试图使用do / while循环以及嵌套的if语句。如果要停止打印卡片,我就无法获得最后一张卡片。当“玩家”#39;命中'进入'。以太getchar()保持if语句,这样只有当用户不断按Enter键时才打印(这甚至不接近我想要的)或者只是在暂停后继续打印。
void printDeck(Card *deck, const char *faces[], const char *suits[], FILE *fp)
{
int loop, t;
// print the deck one card at a time
fp = fopen("cardsprinted.txt", "w+");
t = ftell(fp);
char c;
do {
c = getchar();
for (loop = 0; loop < 52; loop++) {
// print the face and suit of the card to stdout as well as file
printf("%s of %s\n",faces[deck[loop].face],suits[deck[loop].suit]);
fprintf(fp,"%s of %s\n",faces[deck[loop].face],suits[deck[loop].suit]);
fseek(fp, t, SEEK_SET); // finds beginning of the file
fseek(fp,t,SEEK_END);// finds end of file for printing
// loop to pause for 3seconds before printing next card.
if ((loop % 1) == 0 && loop != 0) {
sleep(3);
}
}
} while (c != '\n' && c != EOF);
fclose(fp);
}
输出示例:
./slapjack
Queen of Spades
Nine of Spades
Jack of Hearts
这是我点击Enter并希望循环停止打印的地方。
Three of Hearts
Queen of Hearts
Six of Spades
Seven of Diamonds
^C
但它不起作用......
我也尝试过不使用getchar()。我想也许scanf()会更容易,但仍然没有运气。
答案 0 :(得分:0)
使用while语句。
将control var设置为true
在进入之前,如果检测到set control var为false,则测试getchar
输入while循环
下面的psudocode:
controlvar = ! getchar()
while (controlvar) {
do something
test for end condition or getchar to set controlvar false
}