我对 C 语言中的数组有一个简单的问题:
从数组中删除元素并使数组变小的最佳方法是什么。
例如:该数组的大小为 n,然后我取出数组中的一些元素,那么数组的大小将减少取出的元素个数。
基本上,我把这个数组当做一副扑克牌来处理,一旦我从牌堆顶部取走一张牌,它就不应该在那里了。
编辑:在今天结束之前,我会把自己逼疯的,感谢所有的帮助,我尝试过值交换但是没有成功。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
enum faces { Ace = 0, Jack = 10, Queen, King };
char *facecheck(int d);
int draw(int deck, int i);
int main() {
int deck[52], i, n;
char suits[4][9] = {
"Hearts",
"Diamonds",
"Clubs",
"Spades"
};
n = 0;
for (i = 0; i < 52; i++) {
deck[i] = n;
n++;
};
for (i = 0; i < 52; i++) {
if (i % 13 == 0 || i % 13 == 10 || i % 13 == 11 || i % 13 == 12)
printf("%s ", facecheck(i % 13));
else
printf("%d ", i % 13 + 1);
printf("of %s \n", suits[i / 13]);
}
draw(deck, i);
return 0;
}
char *facecheck(int d) {
static char *face[] = {
"Ace",
"Jack",
"Queen",
"King"
};
if (d == Ace)
return face[0];
else {
if (d == Jack)
return face[1];
else {
if (d == Queen)
return face[2];
else {
if (d == King)
return face[3];
}
}
}
}
int draw(int deck, int i) {
int hand[5], j, temp[j];
for (i = 0; i < 52; i++) {
j = i
};
for (i = 0; i < 5; i++) {
deck[i] = hand[];
printf("A card has been drawn \n");
deck[i] = temp[j - 1];
temp[j] = deck[i];
};
return deck;
}
memcpy()
无法正常工作。正确的方法是使用memmove()
。 - KRoy