c - 纸牌问题,C 函数有问题
问题描述
我只是一个初学者,非常感谢您的帮助。在下面的代码中,我收到错误,似乎我对函数做错了。程序输出如下所示,它假设随机生成一个列表,如图所示。
请提供有关如何修复此程序的任何建议。
#include <stdio.h>
void random_shuffle(deck, deck+52) {
}
/* initialize suit array */
const char *suit[ 4 ] = { "Hearts", "Diamonds", "Clubs", "Spades" };
/* initialize face array */
const char *face[ 13 ] = { "Ace", "Deuce", "Three", "Four",
"Five", "Six", "Seven", "Eight",
"Nine", "Ten", "Jack", "Queen", "King" };
void for_each(int *start, int *end, void(*f)(int)) {
for (int *cur = start; cur < end; cur++) {
f(*cur);
}
}
void print_card(int n) {
printf("%s of %s\n", face[n % 13], suit[n / 13]);
}
void shuffleAndDeal( int workdeck[][ 13 ], const char *workface[], const char *worksuit[] ) {
// srand((unsigned int)time(NULL));
int deck[52];
// Prime, shuffle, dump
for (int i=0;i<52;i++) {
deck[i] = i;
}
random_shuffle(deck, deck+52);
for_each(deck, deck+52, print_card);
return;
}
int main( int argc, char *argv[] ) {
/* initialize deck array */
int deck[ 4 ][ 13 ] = { 0 };
shuffleAndDeal( deck, face, suit );
return 0; /* indicates successful termination */
}
[![输出][1]][1]
以下是我遇到的错误
void random_shuffle(deck, deck+52) {
^
main.c: In function ‘shuffleAndDeal’:
main.c:36:5: warning: implicit declaration of function ‘random_shuffle’ [-Wimplicit-function-declaration]
random_shuffle(deck, deck+52);
^~~~~~~~~~~~~~
main.c: At top level:
main.c:47:6: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘:’ token
https://www.onlinegdb.com/online_c_compiler#tab-stdin
^```
[1]: https://i.stack.imgur.com/bF7tl.png
解决方案
这个 ...
void random_shuffle(deck, deck+52) { }
... 不是有效的 C 函数定义。您必须为每个函数参数表达一个类型和一个不同的标识符。您没有为任一参数指定类型,并且deck+52
不是(仅)标识符。
推荐阅读
- node.js - node.js 表达 maxAge 设置
- java - 从对象中私有的关键字段中获取 MethodHandle 列表
- amazon-athena - 为 athena 选择特定文件
- flutter - 颤振在底部表顶部显示 Snackbar
- ios - 放置 3D 模型代替坐标
- c - Printf 递归字符串函数奇怪的行为
- angular - 组件中的 Angular 7 选项卡
- c# - 使用安全密钥 System.IdentityModel.Tokens.Jwt 4.0.2 解码 Jwt 令牌
- angular - 加载外部脚本后无法访问组件
- python - 在 AWS 上访问 Luigi 可视化工具