为什么我的数组(或函数)不起作用?
我已经想了很久了。
我一直没有收到来自GCC的错误或警告,我想从其中的一张HandCard或playerCard中移动一张卡,但没有任何可见的结果...
最小的可复制示例(我相信它是在mainCenter中编辑的函数'centerCardStack'或数组'move'中):
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
char playerName;
int row, col, toStack;
int validityCheck;
int move[4];
int centerCardsOne, centerCardsTwo, centerCardsThree, centerCardsFour, centerCardsFive;
int playerCardsComOne, playerCardsComTwo, playerCardsComThree, playerCardsComFour, playerCardsComFive;
void centerCardStack(int section, int card, int toCenterStack){
//edit the center stacks from a persons selection
//and edit the persons handCards or playerCards
if(playerName == 'P'){ //test who player is, later code is 'P'
if(section==1){ //test secion. 1 is playercards, 2 is handcards
if(card==1){ //test card. if card is one, first card...
if(toCenterStack==1){ //test which stack
if(playerCardsComOne-1==centerCardsOne) //test if valid
centerCardsOne++;
else //or not
validityCheck=1;
}
if(toCenterStack==2){
if(playerCardsComOne-1==centerCardsTwo)
centerCardsTwo++;
else
validityCheck=1;
}
if(toCenterStack==3){
if(playerCardsComOne-1==centerCardsThree)
centerCardsThree++;
else
validityCheck=1;
}
if(toCenterStack==4){
if(playerCardsComOne-1==centerCardsFour)
centerCardsFour++;
else
validityCheck=1;
}
}
}
}
}
void beginCode(){
srand(time(0));
playerCardsComOne = (rand() % 12) + 1;
playerCardsComTwo = (rand() % 12) + 1;
playerCardsComThree = (rand() % 12) + 1;
playerCardsComFour = (rand() % 12) + 1;
playerCardsComFive = (rand() % 12) + 1;
}
//run the above
int main(){
playerName='P';
beginCode();
printf("handcards: %2d|%2d|%2d|%2d|%2d\n", playerCardsComOne, playerCardsComTwo, playerCardsComThree, playerCardsComFour, playerCardsComFive);
printf("center---: %2d|%2d|%2d|%2d|%2d\n", centerCardsOne, centerCardsTwo, centerCardsThree, centerCardsFour, centerCardsFive);
printf("move> ");
scanf("%d", move);
row=move[0];
col=move[1];
toStack=move[2];
centerCardStack(row, col, toStack);
printf("aftermove: %2d|%2d|%2d|%2d|%2d\n", centerCardsOne, centerCardsTwo, centerCardsThree, centerCardsFour, centerCardsFive);
}
我使用的是Linux Mint 19.3 64位,使用GCC 7.4.0,在带有Intel Core 2 Duo @ 2.2 Ghz(Intel Centrino)的Gateway NV78笔记本电脑上运行。
我还没有任何能帮助我的东西。
谁能帮我?我从代码中得到的只是头疼...
答案 0 :(得分:0)
我找到了答案!
感谢kaylum的建议,我使用了scanf("%d%d%d", &row, &col, &toStack);
,从而解决了我的问题。我试图scanf("%d", move);
读取整个scanf来移动各个区域,但这没用。
现在,我可以使用一个函数来编辑不同的int。
谢谢!