У меня есть текстовый файл длиной n m (это не имеет значения в долгосрочной перспективе). В каждой строке есть последовательность, подобная этой:
1 + 2 + 5 - 3 =
Я использую функцию fscanf
, чтобы перехватить все числа и операторы и вычислить их, и когда оператор '=' обнаружил, он печатает в другой файл , Я пользуюсь al oop. У меня вопрос, как C распознает номер и оператора? Я знаю, что оператор относится к типу %c
, а число относится к типу %d
, но как моя программа работает правильно и почему она не принимает их, например, 5 как символ:
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *InFile;
FILE *OutFile;
int number=0;
int result=0;
char operator;
int foundEqualsOp=0;
InFile = fopen("dane.txt","r");
OutFile = fopen("wynik.txt","w");
while(fscanf(InFile,"%d",&result)!=EOF)
{
number = 0;
foundEqualsOp = 0;
while(!foundEqualsOP){
fscanf(InFile,"%c",&operator);
if(operator == '='){
foundEqualsOp = 1;
fprintf(OutFile,"%d\n",result);
}
else if(operator == '-'){
fscanf(InFile,"%d",&number);
result = result-number;
}
else if (operator == '+'){
fscanf(InFile,"%d",&number);
result = result + number;
}
}
}
fclose(InFile);
fclose(OutFile);
return 0;
}