【发布时间】:2020-09-24 21:29:40
【问题描述】:
这个函数必须打印纸牌游戏的牌堆。
void print_stacks(Stack *stacks){
char moretab[20] = {0};
Stack *currentPtr = &(stacks[0]);
for (size_t i=1;i<10;++i){
while (currentPtr != NULL){
printf("%s%s\n%s",currentPtr->cardd.face,currentPtr->cardd.suit,moretab);
currentPtr = currentPtr->nextPtr;
}
strcat(moretab,"\t");
currentPtr = &(stacks[i]);
}
}
如果你愿意,这里是完整的代码:https://hastebin.com/iguteleqiq.cpp
我有这个输出例如:
> cmd /c .\"solitaire.exe"
8♣
2♣
Q♣
9♠
2♦
2♥
Q♥
6♠
7♠
J♥
Q♦
10♦
7♦
J♦
4♣
K♦
4♠
2♠
A♥
3♣
J♣
9♥
3♦
8♠
10♥
K♠
3♠
8♥
A♣
A♦
8♦
J♠
9♣
4♥
9♦
5♥
K♣
6♦
A♠
3♥
4♦
K♥
5♠
10♠
5♣
预期输出:
> cmd /c .\"somerset.exe"
8♣ 2♣ 9♠ Q♥ Q♦ etc etc etc
Q♣ 2♦ 6♠ 10♦
2♥ 7♠ 7♦
J♥ J♦
4♣
我怎样才能让所有这些卡片堆在同一条第一行对齐?我试图刷新标准输出,但不起作用。为了实现这一目标,我能做些什么?我不是很有经验。
【问题讨论】:
-
“在同一行对齐”到底是什么意思?您能否显示预期的输出,以便毫无疑问。
-
您一直在字符串的开头添加制表符:
strcat(moretab,"\t");“重置字符串”,您应该没问题 :) 问:您首先想要制表符做什么? Q:如果需要更多帮助,能否提供更完整的example? -
@kaylum 更新了话题。
-
如果您不想移动到下一行,请不要打印换行符。为了实现您想要的输出,您最好的选择是逐行而不是逐列打印。
-
@HugoCunha 他想要一个垂直回车,将光标带回屏幕顶部。约翰的想法是对的。这是一个工作示例:onlinegdb.com/ryi9K95SP