我正在努力让这个代码快速完成课程,因为我已经写了超过10个小时,我只是无法让它工作。基本上它是一个多米诺程序,你输入多米诺骨牌的第一个数字,第二个数字,然后一个标志(y将是标准的 - 当骰子被移除时将不得不切换到n)。目前我收到错误说明以下内容: 1.警告:格式'%c'需要'char '类型的参数,但参数2的类型为'void()()' 2.错误:被叫对象'print'不是一个函数 3.错误:'Domino'之前的预期表达式
我已经在网上坐了几个小时研究这个问题,我知道我错过了一些小事。非常感谢任何帮助
#include <stdio.h>
#include <stdlib.h>
int getIndex();
void addDomino();
void removeDomino();
void print();
void quit();
typedef struct Domino{
int * i;
int * x;
int * y;
}Domino;
int main(int argc, char * argv[])
{
int NumDom, DomNum1, DomNum2, DomIndex, Index, input;
char MainMenu;
//Startup
printf("Enter the max number of dominos:");
scanf("%d",&NumDom);
void * add = malloc(size(Domino)*1);
void * remove = malloc(offset(Domino)*1);
void * print = malloc(sizeof(Domino)*10);
//int domino[NumDom][3];
//int dom[0][3] = {Index, DomNum1, DomNum2};
//Main Menu
// printf("Enter (p) to print (a) to add (r) to remove and (q) to quit\n");
// printf(":");
// scanf("%s",&MainMenu);
printf("Enter (p) to print (a) to add (r) to remove and (q) to quit\n");
scanf("%c%c%c%c \n", addDomino, removeDomino, print, quit);
switch(input)
{
case 'a':
addDomino();
break;
case 'r':
removeDomino();
break;
case 'p':
print();
break;
case 'q':
quit();
break;
printf(":\n");
}
}
//Add
void addDomino(DomNum1, DomNum2)
{
printf("Enter number 1\n");
printf(":");
scanf("%d", &DomNum1);
printf("Enter number 2\n");
printf(":");
scanf("%d", &DomNum2);
}
//Print
void printDomino(DomNum1, DomNum2)
{
printf("Printing Dominos\n");
printf("Domino # (%d,%d)\n",DomNum1,DomNum2);
}
//Remove
void removeDomino(DomIndex)
{
printf("Enter the index:%d", DomIndex);
scanf("%d", &DomIndex);
}
//Quit
void quit()
{
printf("All done\n");
}
这里的原始代码无法解决我所有的功能问题
#include <stdio.h>
#include <stdlib.h>
typedef struct Domino{
int * i;
int * x;
int * y;
}Domino;
int main(int argc, const char * argv[])
{
int NumDom, DomNum1, DomNum2, DomIndex, Index;
char MainMenu;
//Startup
printf("Enter the max number of dominos:");
scanf("%d",&NumDom);
//int domino[NumDom][3];
//int dom[0][3] = {Index, DomNum1, DomNum2};
//Main Menu
printf("Enter (p) to print (a) to add (r) to remove and (q) to quit\n");
printf(":");
scanf("%s",&MainMenu);
//Add
printf("Enter number 1\n");
printf(":");
scanf("%d", &DomNum1);
printf("Enter number 2\n");
printf(":");
scanf("%d", &DomNum2);
//Print
printf("Printing Dominos\n");
printf("Domino # (%d,%d)\n", DomNum1, DomNum2);
//Remove
printf("Enter the index:5");
scanf("%d", &DomIndex);
//Quit
printf("All done\n");
}
答案 0 :(得分:0)
至于第一个问题 - 你将函数指针传递给scant函数,我不明白你想要实现的是什么。
只需给它input
变量即可。
答案 1 :(得分:0)
你的问题是你告诉scanf
扫描一个角色,但是你没有给它一个字符来输入值。例如,这个:
printf("Enter (p) to print (a) to add (r) to remove and (q) to quit\n");
scanf("%c%c%c%c \n", addDomino, removeDomino, print, quit);
没有任何意义。您要求用户选择一个命令,但要求输入4个字符。你只需要这样的东西:
char command;
printf("Enter (p) to print (a) to add (r) to remove and (q) to quit\n");
scanf("%c", &command);
您还没有在函数中输入参数。例如:
void addDomino(DomNum1, DomNum2)
看起来应该是这样的:
void addDomino(int DomNum1, int DomNum2)
在顶部,你有这个:
void addDomino()
它应该是这样的:
void addDomino(int, int)
这样您就可以从addDomino()
内拨打main()
。