我的目标是打印和存储num和res的字符串值,并使用SetNum和SetRes函数将它们返回在main中使用,并在main函数的后续代码中将它们用于算术运算。以下代码产生
num到34 解析为4.80873 4.00000
其中4.0000应该是res的值。我想打印它以了解SetRes是否实际上返回了正确的浮点值,但没有。我该如何纠正此代码?
注意:ObjectInt检查令牌是否为整数,ObjectFloat检查令牌是否为Float并在文件中扫描对象。
int setNum(const char* object)
{
if (objectInt(object)) {
int number, num;
number = atoi(object);
num = number;
printf("num to %d\n", num);
}
else if (objectFloat(object)) {
float numberf, numf;
numberf = atof(object);
numf = numberf;
printf("num to %lf\n", numf);
}
}
int setRes(const char* object)
{
if (objectInt(object)) {
int number, res;
number = atoi(object);
res = number;
printf("res to %d\n", res);
}
else if (objectFloat(object)) {
float resf;
resf = atof(object);
printf("res to %lf\n", resf);
return resf;
}
}
int main()
{
char object[100];
int number, result;
float numf, resf;
int flag = 0;
//print number and res if int
if (objectInt(object)) {
if (flag == 1) setNum(object);
else setRes(object);
}
//print number and res if float
else if (objectFloat(object)) {
if (flag == 1) setNum(object);
else resf = setRes(object);
printf("%lf", resf);
}
else if (strcmp(object, IsitNum) == 0) {
flag = 1;
}
else if (strcmp(object, IsitRes) == 0) {
flag = 2;
}
}
答案 0 :(得分:0)
如果setRes()
条件为TRUTHY,则您的if
函数不会返回值。
答案 1 :(得分:0)
我现在通过调用setRes之后使用atof将对象转换为float来访问resf