Файл не удаляется после того, как отработала другая функция - C (СИ)

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

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

Подскажите пожалуйста в чем проблема или как обойти это..... все нормально удаляет
Листинг программы
  1. remove( "file1.dat" );
пока не воспользуюсь этой функцией
Листинг программы
  1. void print( FILE * tf )
  2. {
  3. int i;
  4. clrscr();
  5. tf = fopen( "file1.dat", "rb" );
  6. i = 1;
  7. fread( &t1, sizeof( t1 ), 1, tf );
  8. while( !feof( tf ) )
  9. {
  10. printf( "\n %3d familya %s imya %s otchestvo %s", i, t1.F, t1.I, t1.O);
  11. printf( "\n Ocenki ");
  12. printf("\n %s %s", t1.subject[0].sub, t1.subject[0].bal);
  13. printf("\n %s %s", t1.subject[1].sub, t1.subject[1].bal);
  14. printf("\n %s %s", t1.subject[2].sub, t1.subject[2].bal);
  15. printf("\n %s %s", t1.subject[3].sub, t1.subject[3].bal);
  16. fread( &t1, sizeof( t1 ), 1, tf );
  17. i++;
  18. }
  19. close(tf);
  20. getch();
  21. }

Решение задачи: «Файл не удаляется после того, как отработала другая функция»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4.  
  5. /**********************************
  6.  * У меня нет clrscr. Своя замена *
  7.  **********************************/
  8. void clrscr( )
  9. {
  10.     int i;
  11.     for( i = 0; i < 25; i++ ) putchar( '\n' );
  12. }
  13.  
  14. struct sport
  15. {
  16.     char F[10];
  17.     char I[10];
  18.     char O[10];
  19.     struct subj
  20.     {
  21.         char sub[20];
  22.         char bal[5];
  23.     }subject[4];
  24. } t1;
  25.  
  26. void input( FILE * );
  27. void print( FILE * );
  28. void app( FILE * );
  29. void max_height( );
  30. void del();
  31.  
  32. int main( int argc, char * argv[] )
  33. {
  34.     char c;
  35.     int i;
  36.     FILE * tf;
  37.   i = 1;
  38.     while( i != 0 )
  39.     {
  40.         clrscr();
  41.         puts( "  1 - new file\n"
  42.               "  2 - look file\n"
  43.               "  3 - dobavlenie v file\n"
  44.               "  4 - find studenta po familie\n"
  45.               "  5 - udalit dvoiwnikov\n"
  46.               "  0 - vihod" );
  47.         c = getch();
  48.  
  49.         switch( c )
  50.         {
  51.         case '1':
  52.             input( tf );
  53.             break;
  54.         case '2':
  55.             print( tf );
  56.             break;
  57.         case '3':
  58.             app( tf );
  59.             break;
  60.         case '4':
  61.             max_height(tf );
  62.             break;
  63.             case '5':
  64.             del(tf );
  65.             break;
  66.         case '0':
  67.             return 0;
  68.         default :
  69.             puts( "neverni rezgim" );
  70.         }
  71.     }
  72. }
  73.  
  74. void input( FILE * tf )
  75. {   char ch;
  76.     tf = fopen( "file1.dat", "wb" ); // открытие бинарного файла для записи
  77.     clrscr();
  78.     printf( "\n Vvod dannih \n" );
  79.  
  80.     do
  81.     {    printf( "\n familiya: " );
  82.         scanf( "%s", t1.F );
  83.         printf( " Imya: " );
  84.         scanf( "%s", &t1.I );
  85.         printf( " otchestvo: " );
  86.         scanf( "%s", &t1.O );
  87.         printf( "Predmet 1 " );
  88.         scanf( "%s", &t1.subject[0].sub);
  89.         printf("Ocenka " );
  90.         scanf("%s", &t1.subject[0].bal );
  91.         printf( "Predmet 2 " );
  92.         scanf( "%s", &t1.subject[1].sub);
  93.         printf( "Ocenka " );
  94.         scanf( "%s", &t1.subject[1].bal );
  95.         printf( "Predmet 3 " );
  96.         scanf( "%s", &t1.subject[2].sub);
  97.         printf( "Ocenka " );
  98.         scanf( "%s", &t1.subject[2].bal );
  99.         printf( "Predmet 4 " );
  100.         scanf( "%s", &t1.subject[3].sub);
  101.         printf( "Ocenka " );
  102.         scanf( "%s", &t1.subject[3].bal );
  103.        
  104.         fwrite( &t1, sizeof( t1 ), 1, tf ); // запись в файл одной структуры t1
  105.         printf( "\n Zakonchit?  y/n  " );
  106.         ch = getch();
  107.     }   while( ch != 'y' );
  108.  
  109.     fclose( tf );
  110. }
  111.  
  112. void print( FILE * tf )
  113. {
  114.     int i;
  115.     clrscr();
  116.     tf = fopen( "file1.dat", "rb" );
  117.     i = 1;
  118.     fread( &t1, sizeof( t1 ), 1, tf );
  119.  
  120.     while( !feof( tf ) )
  121.     {
  122.         printf( "\n  %3d familya %s  imya %s otchestvo %s", i, t1.F, t1.I, t1.O);
  123.        printf( "\n  Ocenki ");
  124.        printf("\n %s  %s", t1.subject[0].sub, t1.subject[0].bal);
  125.        printf("\n %s  %s", t1.subject[1].sub, t1.subject[1].bal);
  126.        printf("\n %s  %s", t1.subject[2].sub, t1.subject[2].bal);
  127.        printf("\n %s  %s", t1.subject[3].sub, t1.subject[3].bal);
  128.         fread( &t1, sizeof( t1 ), 1, tf );
  129.         i++;
  130.     }
  131.  close(tf);
  132.     getch();
  133. }
  134.  
  135. void app( FILE * tf )
  136. {   char ch;
  137.     tf = fopen( "file1.dat", "ab" ); // открытие бинарного файла для добавления
  138.    
  139.     clrscr();
  140.     printf( "\n  Vvod dannih \n" );
  141.  
  142.    do
  143.     {   printf( "\n familiya: " );
  144.         scanf( "%s", t1.F );
  145.         printf( " Imya: " );
  146.         scanf( "%s", &t1.I );
  147.         printf( " otchestvo: " );
  148.         scanf( "%s", &t1.O );
  149.         printf( "Predmet 1  ocenka " );
  150.         scanf( "%s,%s", &t1.subject[0].sub, t1.subject[0].bal );
  151.         printf( "Predmet 2 ocenka " );
  152.         scanf( "%s,%s", &t1.subject[1].sub, t1.subject[0].bal );
  153.         printf( "Predmet 3 ocenka " );
  154.         scanf( "%s,%s", &t1.subject[2].sub, t1.subject[0].bal );
  155.         printf( "Predmet 4 ocenka " );
  156.         scanf( "%s,%s", &t1.subject[3].sub, t1.subject[0].bal );
  157.         fwrite( &t1, sizeof( t1.subject ), 1, tf ); // запись в файл одной структуры t1
  158.        
  159.         printf( "\n Zakonchit?  y/n  " );
  160.         ch = getch();
  161.     }
  162.     while( ch != 'y' );
  163.  
  164.     fclose( tf );
  165. }
  166.  
  167. void max_height( FILE * fd)
  168. {
  169.    
  170.     int check = 0;
  171.     clrscr();
  172.   printf( " Vvedite familiu: " );
  173.   char name[10];
  174.         scanf( "%s", name );
  175.     fd = fopen( "file1.dat", "r+");
  176.      
  177.     if( !fd )
  178.        return;
  179.  
  180.     struct sport temp_buff;
  181.      
  182.  
  183.  
  184.  
  185.  
  186.      fread( &t1, sizeof( t1 ), 1, fd );
  187.    char yx[0];
  188.  
  189.  
  190.     while( !feof( fd ))
  191.     {
  192.         if( ! strcmp (t1.F,name))
  193.         {
  194.        
  195.     printf( "%s %s %s \n", t1.F, t1.I , t1.O );
  196.       printf( "\n  Ocenki ");
  197.        printf("\n %s  %s", t1.subject[0].sub, t1.subject[0].bal);
  198.        printf("\n %s  %s", t1.subject[1].sub, t1.subject[1].bal);
  199.        printf("\n %s  %s", t1.subject[2].sub, t1.subject[2].bal);
  200.        printf("\n %s  %s", t1.subject[3].sub, t1.subject[3].bal);
  201.     printf( "\n Izmenit ocenki?  y/n  " );
  202.     scanf("%s",yx);
  203.    
  204.     if( ! strcmp (yx,"y"))
  205.     {
  206.     check = 1;
  207.     FILE*tf;        
  208.     tf = fopen( "file1.dat", "rb" );
  209.     fread( &t1, sizeof( t1 ), 1, tf );
  210.     char ch;
  211.     FILE*tf2;
  212.     tf2 = fopen( "file2.dat", "wb" );
  213.      while( !feof( tf ) )
  214.     {
  215.         if( ! strcmp (t1.F,name))
  216.         {
  217.                    
  218.          printf( "Predmet 1 " );
  219.         scanf( "%s", &t1.subject[0].sub);
  220.    
  221.         printf("Ocenka " );
  222.         scanf("%s", &t1.subject[0].bal );
  223.        
  224.         printf( "Predmet 2 " );
  225.         scanf( "%s", &t1.subject[1].sub);
  226.         printf( "Ocenka " );
  227.         scanf( "%s", &t1.subject[1].bal );
  228.          
  229.         printf( "Predmet 3 " );
  230.         scanf( "%s", &t1.subject[2].sub);
  231.         printf( "Ocenka " );
  232.         scanf( "%s", &t1.subject[2].bal );
  233.          
  234.         printf( "Predmet 4 " );
  235.         scanf( "%s", &t1.subject[3].sub);
  236.         printf( "Ocenka " );
  237.         scanf( "%s", &t1.subject[3].bal );
  238.            
  239.             fwrite( &t1, sizeof( t1 ), 1, tf2 );
  240.         }
  241.         else
  242.         {
  243.        
  244.             fwrite( &t1, sizeof( t1 ), 1, tf2 );
  245.         }
  246.        
  247.        
  248.    
  249.        
  250.         fread( &t1, sizeof( t1 ), 1, tf );
  251.     }        
  252.              
  253.              
  254.              
  255.              
  256.              
  257.        
  258.        
  259.         fclose(tf);
  260.      fclose( tf2 );    
  261.      
  262.     }
  263.  
  264.         }
  265.     fread( &t1, sizeof( t1 ), 1, fd );
  266.    
  267.      
  268.     }
  269.    
  270.  
  271.     fclose( fd );
  272. if (check =1){
  273.  
  274.     remove( "file1.dat" );
  275.    rename("file2.dat","file1.dat");
  276.  
  277.    }
  278.     getch();
  279. }
  280. void del(FILE* tf)
  281. {
  282.  
  283. //   remove( "file1.dat" );
  284.  
  285.        
  286.     tf = fopen( "file1.dat", "rb" );
  287.     fread( &t1, sizeof( t1 ), 1, tf );
  288.     char ch;
  289.     FILE*tf2;
  290.     tf2 = fopen( "file2.dat", "wb" );
  291.     int checker = 0;
  292.      while( !feof( tf ) )
  293.     {
  294.      checker = 0;
  295.     char lol[5];
  296.      if( ! strcmp (t1.subject[0].bal,"2"))
  297.       checker = checker +1;
  298.     if( ! strcmp (t1.subject[1].bal,"2"))
  299.     checker = checker +1;
  300.   if( ! strcmp (t1.subject[2].bal,"2"))
  301.    checker = checker +1;
  302.    if( ! strcmp (t1.subject[3].bal,"2"))
  303.     checker = checker +1;
  304.    
  305.     if(checker==4)
  306.     {
  307.        
  308.     }
  309.     else
  310.             {
  311.        
  312.             fwrite( &t1, sizeof( t1 ), 1, tf2 );
  313.         }
  314.        
  315.        
  316.    
  317.        
  318.         fread( &t1, sizeof( t1 ), 1, tf );
  319.     }        
  320.              
  321.              
  322.              
  323.              
  324.              
  325.        
  326.        
  327.         fclose(tf);
  328.      fclose( tf2 );  
  329.    
  330. }

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


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

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

12   голосов , оценка 4.333 из 5

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

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

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