File, fscanf

di il
2 risposte

File, fscanf

Buonasera, ho una domanda: ho scritto questo programma che prende in input dei numeri presenti in un file e li riscrive in un altro file. Come faccio a modificarlo in modo che il numero degli interi da leggere ( e riscrivere) sia variabile? devo utilizzare il valore ritornato da scanf.

#include <stdio.h>
#define N 100

int main()
{
	int i, n;
	FILE* fp;
	FILE* fp2;
	int v[N];
	
	fp = fopen("dati.txt", "r");
	
	if (fp != NULL) {
		for (i = 0; i < 4; i++) {
			fscanf(fp, "%d", &v[i]);
		}
	}
	else printf("Error");
	
	fclose(fp);
	
	fp2 = fopen("dati2.txt", "w");
	
	for (i = 0; i < 4; i++) {
		fprintf(fp2, "%d\t", v[i]);
	}
	
	fclose(fp2);
}

2 Risposte

  • Re: File, fscanf

    Controlla il valore restituito da fscanf e usa un ciclo while
  • Re: File, fscanf

    Per ora l'ho fatto così, ci sono modi migliori?
    :
     #include <stdio.h>
    #define N 100
    
    int main()
    {
    	int i, n;
    	FILE* fp;
    	FILE* fp2;
    	int v[N];
    	int count;
    	
    	fp = fopen("dati.txt", "r");
    	
    	if (fp != NULL) {
    		for (n = 0; n < N; n++) {
    			count = fscanf(fp, "%d", &v[n]);
    			if (count == EOF) {
    				break;
    			}
    			
    		}
    	}
    	else printf("Error");
    	
    	fclose(fp);
    	
    	fp2 = fopen("dati2.txt", "w");
    	
    	for (i = 0; i < n; i++) {
    		fprintf(fp2, "%d\t", v[i]);
    	}
    	
    	fclose(fp2);
    }
Devi accedere o registrarti per scrivere nel forum
2 risposte