Файл не удаляется после того, как отработала другая функция - C (СИ)
Формулировка задачи:
Подскажите пожалуйста в чем проблема или как обойти это.....
все нормально удаляет
пока не воспользуюсь этой функцией
Листинг программы
- remove( "file1.dat" );
Листинг программы
- void print( FILE * tf )
- {
- int i;
- clrscr();
- tf = fopen( "file1.dat", "rb" );
- i = 1;
- fread( &t1, sizeof( t1 ), 1, tf );
- while( !feof( tf ) )
- {
- printf( "\n %3d familya %s imya %s otchestvo %s", i, t1.F, t1.I, t1.O);
- printf( "\n Ocenki ");
- printf("\n %s %s", t1.subject[0].sub, t1.subject[0].bal);
- printf("\n %s %s", t1.subject[1].sub, t1.subject[1].bal);
- printf("\n %s %s", t1.subject[2].sub, t1.subject[2].bal);
- printf("\n %s %s", t1.subject[3].sub, t1.subject[3].bal);
- fread( &t1, sizeof( t1 ), 1, tf );
- i++;
- }
- close(tf);
- getch();
- }
Решение задачи: «Файл не удаляется после того, как отработала другая функция»
textual
Листинг программы
- #include <stdio.h>
- #include <string.h>
- /**********************************
- * У меня нет clrscr. Своя замена *
- **********************************/
- void clrscr( )
- {
- int i;
- for( i = 0; i < 25; i++ ) putchar( '\n' );
- }
- struct sport
- {
- char F[10];
- char I[10];
- char O[10];
- struct subj
- {
- char sub[20];
- char bal[5];
- }subject[4];
- } t1;
- void input( FILE * );
- void print( FILE * );
- void app( FILE * );
- void max_height( );
- void del();
- int main( int argc, char * argv[] )
- {
- char c;
- int i;
- FILE * tf;
- i = 1;
- while( i != 0 )
- {
- clrscr();
- puts( " 1 - new file\n"
- " 2 - look file\n"
- " 3 - dobavlenie v file\n"
- " 4 - find studenta po familie\n"
- " 5 - udalit dvoiwnikov\n"
- " 0 - vihod" );
- c = getch();
- switch( c )
- {
- case '1':
- input( tf );
- break;
- case '2':
- print( tf );
- break;
- case '3':
- app( tf );
- break;
- case '4':
- max_height(tf );
- break;
- case '5':
- del(tf );
- break;
- case '0':
- return 0;
- default :
- puts( "neverni rezgim" );
- }
- }
- }
- void input( FILE * tf )
- { char ch;
- tf = fopen( "file1.dat", "wb" ); // открытие бинарного файла для записи
- clrscr();
- printf( "\n Vvod dannih \n" );
- do
- { printf( "\n familiya: " );
- scanf( "%s", t1.F );
- printf( " Imya: " );
- scanf( "%s", &t1.I );
- printf( " otchestvo: " );
- scanf( "%s", &t1.O );
- printf( "Predmet 1 " );
- scanf( "%s", &t1.subject[0].sub);
- printf("Ocenka " );
- scanf("%s", &t1.subject[0].bal );
- printf( "Predmet 2 " );
- scanf( "%s", &t1.subject[1].sub);
- printf( "Ocenka " );
- scanf( "%s", &t1.subject[1].bal );
- printf( "Predmet 3 " );
- scanf( "%s", &t1.subject[2].sub);
- printf( "Ocenka " );
- scanf( "%s", &t1.subject[2].bal );
- printf( "Predmet 4 " );
- scanf( "%s", &t1.subject[3].sub);
- printf( "Ocenka " );
- scanf( "%s", &t1.subject[3].bal );
- fwrite( &t1, sizeof( t1 ), 1, tf ); // запись в файл одной структуры t1
- printf( "\n Zakonchit? y/n " );
- ch = getch();
- } while( ch != 'y' );
- fclose( tf );
- }
- void print( FILE * tf )
- {
- int i;
- clrscr();
- tf = fopen( "file1.dat", "rb" );
- i = 1;
- fread( &t1, sizeof( t1 ), 1, tf );
- while( !feof( tf ) )
- {
- printf( "\n %3d familya %s imya %s otchestvo %s", i, t1.F, t1.I, t1.O);
- printf( "\n Ocenki ");
- printf("\n %s %s", t1.subject[0].sub, t1.subject[0].bal);
- printf("\n %s %s", t1.subject[1].sub, t1.subject[1].bal);
- printf("\n %s %s", t1.subject[2].sub, t1.subject[2].bal);
- printf("\n %s %s", t1.subject[3].sub, t1.subject[3].bal);
- fread( &t1, sizeof( t1 ), 1, tf );
- i++;
- }
- close(tf);
- getch();
- }
- void app( FILE * tf )
- { char ch;
- tf = fopen( "file1.dat", "ab" ); // открытие бинарного файла для добавления
- clrscr();
- printf( "\n Vvod dannih \n" );
- do
- { printf( "\n familiya: " );
- scanf( "%s", t1.F );
- printf( " Imya: " );
- scanf( "%s", &t1.I );
- printf( " otchestvo: " );
- scanf( "%s", &t1.O );
- printf( "Predmet 1 ocenka " );
- scanf( "%s,%s", &t1.subject[0].sub, t1.subject[0].bal );
- printf( "Predmet 2 ocenka " );
- scanf( "%s,%s", &t1.subject[1].sub, t1.subject[0].bal );
- printf( "Predmet 3 ocenka " );
- scanf( "%s,%s", &t1.subject[2].sub, t1.subject[0].bal );
- printf( "Predmet 4 ocenka " );
- scanf( "%s,%s", &t1.subject[3].sub, t1.subject[0].bal );
- fwrite( &t1, sizeof( t1.subject ), 1, tf ); // запись в файл одной структуры t1
- printf( "\n Zakonchit? y/n " );
- ch = getch();
- }
- while( ch != 'y' );
- fclose( tf );
- }
- void max_height( FILE * fd)
- {
- int check = 0;
- clrscr();
- printf( " Vvedite familiu: " );
- char name[10];
- scanf( "%s", name );
- fd = fopen( "file1.dat", "r+");
- if( !fd )
- return;
- struct sport temp_buff;
- fread( &t1, sizeof( t1 ), 1, fd );
- char yx[0];
- while( !feof( fd ))
- {
- if( ! strcmp (t1.F,name))
- {
- printf( "%s %s %s \n", t1.F, t1.I , t1.O );
- printf( "\n Ocenki ");
- printf("\n %s %s", t1.subject[0].sub, t1.subject[0].bal);
- printf("\n %s %s", t1.subject[1].sub, t1.subject[1].bal);
- printf("\n %s %s", t1.subject[2].sub, t1.subject[2].bal);
- printf("\n %s %s", t1.subject[3].sub, t1.subject[3].bal);
- printf( "\n Izmenit ocenki? y/n " );
- scanf("%s",yx);
- if( ! strcmp (yx,"y"))
- {
- check = 1;
- FILE*tf;
- tf = fopen( "file1.dat", "rb" );
- fread( &t1, sizeof( t1 ), 1, tf );
- char ch;
- FILE*tf2;
- tf2 = fopen( "file2.dat", "wb" );
- while( !feof( tf ) )
- {
- if( ! strcmp (t1.F,name))
- {
- printf( "Predmet 1 " );
- scanf( "%s", &t1.subject[0].sub);
- printf("Ocenka " );
- scanf("%s", &t1.subject[0].bal );
- printf( "Predmet 2 " );
- scanf( "%s", &t1.subject[1].sub);
- printf( "Ocenka " );
- scanf( "%s", &t1.subject[1].bal );
- printf( "Predmet 3 " );
- scanf( "%s", &t1.subject[2].sub);
- printf( "Ocenka " );
- scanf( "%s", &t1.subject[2].bal );
- printf( "Predmet 4 " );
- scanf( "%s", &t1.subject[3].sub);
- printf( "Ocenka " );
- scanf( "%s", &t1.subject[3].bal );
- fwrite( &t1, sizeof( t1 ), 1, tf2 );
- }
- else
- {
- fwrite( &t1, sizeof( t1 ), 1, tf2 );
- }
- fread( &t1, sizeof( t1 ), 1, tf );
- }
- fclose(tf);
- fclose( tf2 );
- }
- }
- fread( &t1, sizeof( t1 ), 1, fd );
- }
- fclose( fd );
- if (check =1){
- remove( "file1.dat" );
- rename("file2.dat","file1.dat");
- }
- getch();
- }
- void del(FILE* tf)
- {
- // remove( "file1.dat" );
- tf = fopen( "file1.dat", "rb" );
- fread( &t1, sizeof( t1 ), 1, tf );
- char ch;
- FILE*tf2;
- tf2 = fopen( "file2.dat", "wb" );
- int checker = 0;
- while( !feof( tf ) )
- {
- checker = 0;
- char lol[5];
- if( ! strcmp (t1.subject[0].bal,"2"))
- checker = checker +1;
- if( ! strcmp (t1.subject[1].bal,"2"))
- checker = checker +1;
- if( ! strcmp (t1.subject[2].bal,"2"))
- checker = checker +1;
- if( ! strcmp (t1.subject[3].bal,"2"))
- checker = checker +1;
- if(checker==4)
- {
- }
- else
- {
- fwrite( &t1, sizeof( t1 ), 1, tf2 );
- }
- fread( &t1, sizeof( t1 ), 1, tf );
- }
- fclose(tf);
- fclose( tf2 );
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д