Переписать исходный текстовый файл в результирующий переворачивая все слова задом наперед - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Осталась последняя лабораторная, но у меня никак не получается написать программу...

Задача:

Файл содержит некоторый набор символов. Назовем словом произвольную последовательность латинских букв, разделителями являются все остальные символы. Написать программу, которая переписывает исходный текстовый файл в результирующий переворачивая все слова задом наперед. Помогите пожалуйста очень надо....

Решение задачи: «Переписать исходный текстовый файл в результирующий переворачивая все слова задом наперед»

textual
Листинг программы
#include <stdio.h>
#include <ctype.h>
 
#define INPUT_FILE_NAME "input.txt"
#define OUTPUT_FILE_NAME "output.txt"
#define MAX_WORD_LENGTH (256)
 
int main(void) {
    FILE * fInput, * fOutput;
    char wordBuf[MAX_WORD_LENGTH];
    int ch, bufPos;
    
    if ( ! ( fInput = fopen(INPUT_FILE_NAME, "r") ) ) {
        fprintf(stderr, "Can't open file %s for input!\n", INPUT_FILE_NAME);
        return 1;
    }
    if ( ! ( fOutput = fopen(OUTPUT_FILE_NAME, "w") ) ) {
        fprintf(stderr, "Can't open file %s for output!\n", OUTPUT_FILE_NAME);
        if ( fclose(fInput) )
            fprintf(stderr, "Can't properly close input file!\n");
        return 1;
    }
    
    bufPos = 0;
    while ( ( ch = fgetc(fInput) ) != EOF ) {
        if ( isalpha(ch) ) {
            if ( bufPos >= MAX_WORD_LENGTH ) {
                fprintf(stderr, "Word is too long. Try to increase MAX_WORD_LENGTH parameter.\n");
                if ( fclose(fInput) )
                    fprintf(stderr, "Can't properly close input file!\n");
                if ( fclose(fOutput) )
                    fprintf(stderr, "Can't properly close output file!\n");
                return 1;
            }
            wordBuf[bufPos++] = ch;
        }
        else {
            while ( bufPos > 0 ) {
                if ( fputc(wordBuf[--bufPos], fOutput) == EOF ) {
                    fprintf(stderr, "Can't write to output file!\n");
                    if ( fclose(fInput) )
                       fprintf(stderr, "Can't properly close input file!\n");
                    if ( fclose(fOutput) )
                      fprintf(stderr, "Can't properly close output file!\n");
                    return 1;
                }
            }
            if ( fputc(ch, fOutput) == EOF ) {
                fprintf(stderr, "Can't write to output file!\n");
                if ( fclose(fInput) )
                   fprintf(stderr, "Can't properly close input file!\n");
                if ( fclose(fOutput) )
                    fprintf(stderr, "Can't properly close output file!\n");
                return 1;
            }
        }
    }
    while ( bufPos > 0 ) {
        if ( fputc(wordBuf[--bufPos], fOutput) == EOF ) {
            fprintf(stderr, "Can't write to output file!\n");
            if ( fclose(fInput) )
                fprintf(stderr, "Can't properly close input file!\n");
            if ( fclose(fOutput) )
                fprintf(stderr, "Can't properly close output file!\n");
            return 1;
        }
    }
    
    if ( ferror(fInput) || fclose(fInput) || fclose(fOutput) ) {
        fprintf(stderr, "IO Error!\n");
        return 1;
    }
    
    fprintf(stderr, "Done.\n");
    return 0;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.786 из 5
Похожие ответы