Не удается получить правильный вывод файла в C на Debian - PullRequest
1 голос
/ 10 июня 2019

Я относительно новичок в Debian и C. Попытался написать программу, которая читает файл test.txt и создает файл temp.txt, который затем переименовывается в test.txt.Однако каждый раз, когда я запускаю программу, я получаю нечитаемый вывод.Кроме того, программа не читает файл из рабочего каталога, поэтому мне пришлось использовать полный путь.Есть ли способ исправить это?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

#define FILENAME "/home/deusi/Programming/Personal/C/toUpperCase/test.txt"
#define TEMPFILE "/home/deusi/Programming/Personal/C/toUpperCase/temp.txt"

int main() {

    FILE *fp = NULL;
    FILE *temp = NULL;
    char ch;
    fp = fopen(FILENAME, "r");

    if (!fp) {
        perror("File DNE");
        return -1;
    }

    temp = fopen(TEMPFILE, "w");

    if(!temp) {
        return -1;
    }

    while((ch = fgetc(fp) != EOF)) {

        if(islower(ch)) {
            ch = ch-32;
        }
        fputc(ch,temp);
    }

    fclose(fp);
    fclose(temp);

    rename(TEMPFILE, FILENAME);
    remove(TEMPFILE);

    if(!fp) {
        return -1;
    }

    while ((ch = fgetc(fp)) != EOF) {
        printf("%c", ch);
    }

    return 0;
}

Независимо от того, что я положил в тестовый файл, я получаю вывод типа

1 Ответ

1 голос
/ 10 июня 2019

Есть пара ошибок, но одна, которая портит ваш вывод, здесь:

while((ch = fgetc(fp) != EOF)) {

Здесь вы присваиваете ch значение fgetc(fp) != EOF. Должно быть;

while((ch = fgetc(fp)) != EOF) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...