【发布时间】:2015-05-21 14:27:22
【问题描述】:
所以我正在尝试自学 c(基本上之前没有任何编程语言的经验),现在我在对一些函数进行原型设计以在头文件中使用时遇到了一些问题。
为了学习,我只使用
我能够为我的菜单编写一个仅使用 printf 函数的工作原型函数,但 scanf 给我带来了更多问题,它只是拒绝编译并且无法查看我的思维错误在哪里。
我的主程序:
#include "menu.h"
#include "circlefunctions.h"
#include "input.h"
int main(void){
float diameter;
double straal;
double oppervlakte;
double omtrek;
while(1){
menu();
user_input();
system("cls");
switch(user_input())
{
case 1:
printf(" ----------------------------------------\n");
printf(" Typ de diameter van de cirkel: ");
scanf("%g", &diameter);
printf(" ----------------------------------------\n");
straal = diameter / 2;
oppervlakte = PI * (straal * straal);
omtrek = 2 * PI * straal;
printf(" De straal = %f \n\n", straal );
printf(" De oppervlakte = %f \n\n" , oppervlakte);
printf(" De omtrek = %f \n" , omtrek);
printf(" ----------------------------------------\n");
break;
case 2:
return(0);
case 3:
return(0);
case 9:
return(0);
case 0:
return(0);
}
}
return 0;
}
和顽固的标题:
#include <stdio.h>
void user_input();
void user_input(){
scanf("%d", &user_input);
}
我在尝试编译时遇到的错误在 input.h 中 有的部分; scanf("%d", &user_input);
错误代码:格式“%d”要求参数类型为“int ”,但参数 2 的类型为“void () ()”。 而且我在主程序中的开关上也报错,开关量不是整数。我怀疑这个错误是相关的,但不确定。我仍然需要调试该部分,但如果有人愿意将我指向正确的文档,我将不胜感激。
我的第二个问题也与标题有关:我的
编辑:
感谢大家提供宝贵的信息。
@zenith 谢谢你的例子。我希望你不介意我再问一些。
我在“input.h”中用你的代码替换了我的代码,它现在可以编译和运行了。然而,行为发生了变化。由于某些不清楚的原因,我现在必须在程序接受我的输入之前输入两次选择。所以第一个输入在输入后会被忽略,它只会接受第二个输入。
您能否指出导致此错误的方向?或者也许指向我一些解释这一点的文档?当然,我不想占用你们太多宝贵的时间。
编辑 2
感谢您的回复和信息。我解决了这个错误,它按预期工作(我看不到这一点真是太愚蠢了)。 对于其他回答的人:我当然会接受您的信息并从中学习。谢谢大家!
【问题讨论】:
-
关于
user_input()。一方面,您不应该在头文件中包含可执行代码。另一方面,您正在尝试使用函数本身的地址,而不是提供函数参数。
标签: c