Полные уравнения из текстового файла в C - PullRequest
0 голосов
/ 09 апреля 2019

Мне нужно написать код, чтобы прочитать уравнение из текстового файла и написать ответ в новый, и я полностью застрял

Мне удалось прочитать вопрос и распечатать его в терминале в виде символов, но это все. этот новый код не может даже сделать это.

для тех, кто спрашивает, точная формулировка вопроса такова:

"Прочитать входной файл: questions.txt; и создать программу, которая создает выходной файл answers.txt, который включает вопрос и ответ для каждой строки в файле вопросов. Например, если строка в вопросах: 5 * 5 файл ответов должен гласить: 5 * 5 = 25 Разрешить следующие операции: +, -, *, /,% и правильный порядок операций. Также учитывайте как минимум 2 операторы (3 операнда), например: 3 + 5 * 5 = 28 "

Моя основная проблема - прочитать уравнение из текстового файла и разделить его на числа и символ оператора

FILE *fp;
int a, b, c, ch, i, number[100];
char input[5];

fp = fopen ("questions.txt", "r");

while(1)
{
    ch = fgetc(fp);
    if (ch == EOF)
    {
        break;
    }
    else
    {
        input[i] = ch;
    }
}
fclose(fp);
printf("%s", input);

}

Ответы [ 2 ]

0 голосов
/ 09 апреля 2019

Вам нужно открыть файл, из которого вы хотите прочитать, в режиме чтения с обычным fopen('questions.txt', 'r'), как вы это сделали. Затем вам нужно fopen('newFile.txt', 'w'), в который вы хотите записать, в режиме w записи. Используйте цикл while, чтобы получить каждый символ файла questions.txt с getc(fileToRead), пока вы еще не достигли конца файла questions.txt, следовательно, ... != EOF, и записать в newFile.txt. printf("%c", c) - печатать каждый символ, когда вы читаете его из questions.txt.

FILE *fileToRead, *fileToWrite;
int c;

//open the questions.txt file in read mode
*fileToRead = fopen ("questions.txt", "r");
//create newFile.txt and open it in write mode
*fileToWrite = fopen ("newFile.txt", "w");

while ((c = getc(fileToRead)) != EOF) {
    putc((char)c, fileToWrite );
    printf("%c", (char)c);
}
fclose(fileToRead);
fclose(fileToWrite);
0 голосов
/ 09 апреля 2019

Есть ошибки:

  • файл проверки был открыт правильно: if (fp != NULL)
  • i = 0; на начало, теперь мы не знаем значение
  • input[i] = ch; => input[i++] = (char)ch;
  • if (ch == EOF) => if (ch == EOF && i < 4) 4, потому что 5 - 1 и переместите это в const или macro
  • после перерыва input[i] = '\0';
...