Из файла А в файл В переписать текст в обратном порядке - C (СИ)

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

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

Посмотрите мой код Задача, из файла А в файл В переписать в обратном порядке Если в А
Листинг программы
  1. aa
  2. bbb
  3.  
  4. c
Только вот пустые строки пропускает. Как в файл записать пустую строку? Задача, из файла А в файл В переписать в обратном порядке
Листинг программы
  1. #include "stdafx.h"
  2. #include <stdio.h>
  3. void rec (FILE *, FILE *);
  4.  
  5. int _tmain(int argc, _TCHAR* argv[])
  6. {
  7. FILE *A;
  8. FILE *B;
  9. B = fopen ("I:\\B.txt", "w");
  10. if ( ( A = fopen("I:\\A.txt" , "r")) != NULL)
  11. rec (A,B);
  12. else
  13. printf ("File A net");
  14. return 0;
  15. }
  16. void rec (FILE *A, FILE *B)
  17. {
  18. static int i;
  19. char s[10000];
  20. if (!feof(A))
  21. {
  22. fgets (s,10000,A);
  23. rec (A,B);
  24. }
  25. if (i==1)
  26. fputs (s,B);
  27.  
  28. i=1;
  29. }
Помогите!!!

Решение задачи: «Из файла А в файл В переписать текст в обратном порядке»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. typedef struct NODE {
  6.     char * str;
  7.     struct NODE * next;
  8. } node_t;
  9.  
  10. int push(node_t ** stack, const char * str){
  11.     node_t * n;
  12.    
  13.     if ( ! ( n = malloc(sizeof(node_t)) ) )
  14.         return -1;
  15.    
  16.     if ( ! ( n->str = strdup(str) ) )
  17.         return -1;
  18.    
  19.     n->next = *stack;
  20.     *stack = n;
  21.    
  22.     return 0;
  23. }
  24.  
  25. int pop(node_t ** stack, char * buf){
  26.     node_t * n = *stack;
  27.     if ( ! n )
  28.         return -1;
  29.    
  30.     strcpy(buf, n->str);
  31.     *stack = n->next;
  32.     free(n);
  33.     return 0;
  34. }
  35.  
  36. #define IN_FILE "in.txt"
  37. #define OUT_FILE "out.txt"
  38.  
  39. int main(void){
  40.     char buf[BUFSIZ];
  41.     node_t * stack;
  42.     FILE * f;
  43.    
  44.     if ( ! ( f = fopen(IN_FILE, "r") ) ){
  45.         fprintf(stderr, "Can't open file %s for input!\n", IN_FILE);
  46.         exit(1);
  47.     }
  48.    
  49.     stack = NULL;
  50.     while ( fgets(buf, BUFSIZ, f) ){
  51.         if ( push(&stack, buf) ){
  52.             fprintf(stderr, "Memory error!\n");
  53.             exit(1);
  54.         }
  55.     }
  56.     if ( ferror(f) || fclose(f) ){
  57.         fprintf(stderr, "Error while reading input file!\n");
  58.         exit(1);
  59.     }
  60.    
  61.     if ( ! ( f = fopen(OUT_FILE, "w") ) ){
  62.         fprintf(stderr, "Can't open file %s for output!\n", OUT_FILE);
  63.         exit(1);
  64.     }
  65.    
  66.     while ( ! pop(&stack, buf) ){
  67.         if ( fputs(buf, f) ){
  68.             fprintf(stderr, "Can't write to output file!\n");
  69.             exit(1);
  70.         }
  71.     }
  72.    
  73.     if ( fclose(f) ){
  74.         fprintf(stderr, "Can't close output file!\n");
  75.         exit(1);
  76.     }
  77.    
  78.     exit(0);
  79. }

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


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

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

9   голосов , оценка 3.889 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы