[英]Calculator and a floating point modulus function in C
我必须为计算器的'%'(模数)函数编写一个案例。 编译时,它告诉我我没有正确使用fmod
函数。 没有大小写'%',其余代码将按预期工作。
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <math.h> // Originally missing
#define MAXOP 100
#define NUMBER '0'
int getop(char []);
void push(double);
double pop(void);
main()
{
int type;
double op2;
char s[MAXOP];
printf("\nEnter numbers below in the following format\nwith a space between each:\n");
printf("\tnum1 num2 operator\n");
printf("\tyou may use (+, -, /, *) for the operators\n");
while((type = getop(s)) != EOF)
{
switch(type)
{
case NUMBER:
push(atof(s));
break;
case '+':
push(pop() + pop());
break;
case '*':
push(pop() * pop());
break;
case '-':
op2 = pop();
push(pop() - op2);
break;
case '/':
op2 = pop();
if(op2 != 0.0)
push(pop() / op2);
else
printf("error: zero divisor\n");
break;
case '%':
op2=pop();
if(op2 != 0.0)
push(fmod(pop(),op2));
else
printf("error: zero divisor");
break;
case '\n':
printf("\t%.8g\n", pop());
break;
default:
printf("error: unknown command %s\n", s);
break;
}
}
return 0;
}
我查找了fmod
函数,但仍然不知道为什么它不起作用。 有什么想法吗?
我添加了math.h标头,现在收到的错误消息是:
/tmp/ccgiVhWI.o: In function `main':
calc.c:(.text+0x14f): undefined reference to `fmod'
collect2: ld returned 1 exit status
您缺少#include <math.h>
因此编译器认为fmod()
是返回int
的函数,或者抱怨它知道fmod()
但是您尚未正确声明或声明它。
您最好包含确切的编译器错误消息(除非文件名的路径很长,在这种情况下,截断文件名是一种礼貌)。
您缺少了math.h
标头来提供fmod
的原型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.