C/Lettura e scrittura su file: differenze tra le versioni

Wikibooks, manuali e libri di testo liberi.
< C
Contenuto cancellato Contenuto aggiunto
Pietrodn (discussione | contributi)
poi continuo
 
Pietrodn (discussione | contributi)
Nessun oggetto della modifica
Riga 6: Riga 6:
Le funzioni di I/O che analizzeremo saranno le seguenti:
Le funzioni di I/O che analizzeremo saranno le seguenti:
*<tt>fopen</tt>
*<tt>fopen</tt>
*<tt>getc</tt>
*<tt>putc</tt>
*<tt>fgets</tt>
*<tt>fputs</tt>
*<tt>fprintf</tt>
*<tt>fprintf</tt>
*<tt>fscanf</tt>
*<tt>fscanf</tt>
Riga 53: Riga 57:
int main()
int main()
{
{
FILE *f = fopen("/percorso/del/mio/file.txt", "r");
FILE *f = fopen("/Users/pietro/prova.txt", "r");
if(f != NULL)
if(f != NULL)
{
{
printf("File letto con successo!");
printf("File letto con successo!");
}
}
else
else
{
{
printf("Errore nel leggere il file!");
printf("Errore nel leggere il file!");
exit(1);
}
}
return 0;
fclose(f);
return 0;
}
</pre>

== Lettura ==
Lettura di un file:

<pre>
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
FILE *f = fopen(argv[1], "r");
if(f == NULL)
{
printf("Errore nel leggere il file!\n");
exit(1);
}
char str[80];
fgets(str, 1000000, f);
printf(str);
fclose(f);
return 0;
}
</pre>

== Scrittura ==
Questo programma prende l'input dell'utente e lo scrive su un dato file, fino a che non si digita un punto.

<pre>
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
FILE *f = fopen(argv[1], "w");
if(f == NULL)
{
printf("Errore nel leggere il file!\n");
exit(1);
}
char str[80];
while(strcmp(gets(str), "."))
{
fputs(str, f);
}
fclose(f);
return 0;
}
}
</pre>
</pre>

Versione delle 14:06, 11 nov 2006

Template:Stub Template:Linguaggio C

In C, ogni periferica, file, o dispositivo di memorizzazione è considerato uno stream: le funzioni per scrivere su qualunque dispositivo non cambiano. Per poter usufruire delle funzioni che permettono l'I/O su uno tream, è necessario includere la libreria standard stdio.

Le funzioni di I/O che analizzeremo saranno le seguenti:

  • fopen
  • getc
  • putc
  • fgets
  • fputs
  • fprintf
  • fscanf
  • fclose
  • fflush
  • fseek
  • rewind

Apertura di un file

La funzione fopen serve per aprire un file ed ha il seguente prototipo:

FILE* fopen (const char *nomefile, const char *modalità);

Il parametro nomefile rappresenta il path del file da aprire, mentre la modalità è una delle seguenti:

Modalità Significato
r Sola lettura.
w Se il file non esiste, lo crea e lo apre in sola scrittura. Se esiste, lo sovrascrive prima di aprirlo.
r+ Lettura e scrittura.
w+ Se il file, non esiste, lo crea e lo apre in lettura e scrittura. Se esiste, lo cancella e lo apre in lettura e scrittura.
a Apre il file in sola scrittura, facendo in modo che si possa solo aggiungerli del contenuto, alla fine. Se il file non esiste, viene creato.
a+ Come a, solo che è abilitata anche la lettura in un punto qualsiasi del file.
t Apre il file come testo.
b Apre il file come binario.
#include <stdio.h>

int main()
{
	FILE *f = fopen("/Users/pietro/prova.txt", "r");
	if(f != NULL)
	{
		printf("File letto con successo!");
	}
	else
	{
		printf("Errore nel leggere il file!");
		exit(1);
	}
	fclose(f);
	return 0;
}

Lettura

Lettura di un file:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
	FILE *f = fopen(argv[1], "r");
	if(f == NULL)
	{
		printf("Errore nel leggere il file!\n");
		exit(1);
	}
	char str[80];
	fgets(str, 1000000, f);
	printf(str);
	fclose(f);
	return 0;
}

Scrittura

Questo programma prende l'input dell'utente e lo scrive su un dato file, fino a che non si digita un punto.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
	FILE *f = fopen(argv[1], "w");
	if(f == NULL)
	{
		printf("Errore nel leggere il file!\n");
		exit(1);
	}
	char str[80];
	while(strcmp(gets(str), "."))
	{
		fputs(str, f);
	}
	fclose(f);
	return 0;
}