Переписать исходный текстовый файл в результирующий переворачивая все слова задом наперед - 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;
}