File not closed

di il
3 risposte

File not closed

#include "html.h"


int rimuovi_html(const char *filein, const char *fileout){

	char c = 0;
	
	FILE *fin = fopen(filein, "rt");
	if (fin == NULL){
		fclose(fin);
		return -1;
	}

	FILE *fout = fopen(fileout, "wt");
	if (fout == NULL){
		fclose(fout);
		return -1;
	}

	while (1){
		c = fgetc(fin);

		if (c == EOF)		
			break;
		if (c == '<'){
			do{
				if (c == EOF)			
					fclose(fout);
					fclose(fin);
					return -1;

			} while ((c = fgetc(fin)) != '>');
			continue;		
		}
		int prodotto = fputc(c, fout);
		

	
		
	}

	fclose(fin);
	fclose(fout);

	return 0;

}
qualcuno riesce a capire dove mi sono scordato di chiudere il file perchè ho ricontrollato più volte, ma mi sembra tutto a posto

3 Risposte

  • Re: File not closed

    Ma quando ti succede? Dov'è il main? E il file "html.h"?

    Qui

    if (fout == NULL){

    non chiudi il file fin (quelli con errore non li devi chiudere)
  • Re: File not closed

    Si è vero, mi ero dimenticato..
    questo è il file.h
    #if !defined HTML_H
    #define HTML_H
    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    
    extern int rimuovi_html(const char *filein, const char *fileout);
    
    
    
    #endif
    
    
    main.c:
    #include"html.h"
    
    int main(){
    
    	char str1[] = "leggo.txt";
    	char str2[] = "scrivo.txt";
    
    
    	int ris = rimuovi_html(str1, str2);
    
    
    	return 0;
    
    
    }
    questo il file.c ricorretto, ma che presenta ancora lo stesso problema
    #include "html.h"
    
    
    int rimuovi_html(const char *filein, const char *fileout){
    
    	char c = 0;
    	
    	FILE *fin = fopen(filein, "rt");
    	if (fin == NULL){
    		return -1;
    	}
    
    	FILE *fout = fopen(fileout, "wt");
    	if (fout == NULL){
    		return -1;
    	}
    
    	while (1){
    		c = fgetc(fin);
    
    		if (c == EOF)		
    			break;
    		if (c == '<'){
    			do{
    				if (c == EOF)			
    					fclose(fout);
    					fclose(fin);
    					return -1;
    
    			} while ((c = fgetc(fin)) != '>');
    			continue;		
    		}
    		int prodotto = fputc(c, fout);
    		
    
    	
    		
    	}
    
    	fclose(fin);
    	fclose(fout);
    
    	return 0;
    
    }
  • Re: File not closed

    Hai letto bene tutta la mia risposta?
Devi accedere o registrarti per scrivere nel forum
3 risposte