Моя цель - напечатать и сохранить строковое значение num и res и вернуть их для использования в main с помощью функций SetNum и SetRes AND, чтобы использовать их в арифметических операциях в последующем коде в функции main.Следующий код выдает
от 34 res до 4.80873 4.00000
, где 4.0000 должно быть значением res.Я хотел напечатать это, чтобы знать, действительно ли SetRes вернул правильное значение с плавающей запятой, но это не так.Как я могу исправить этот код?
Примечание: ObjectInt проверяет, является ли токен целочисленным, а ObjectFloat проверяет, является ли токен плавающим и объект сканируется в файле.
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;
}
}