Fichiers en C - Applications résolues


1)Realiser un programme pour lire, en employant les elements introduits, Carectere par caractere du clavier jusqu’au caractere ‘$’ en les passant dans un fichier dont on ecrit le nom du clavier ou l’on specifie sur la ligne des parametres de comande. (ecrire dans fichier)
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main() 
{
FILE *pf;		//on declare la variable pointeur du fichier
char c,*nume;	
printf("Donnez le nom du fichier de travail: ");
nume=(char*)malloc(20*sizeof(char)); //dans C standard il n’etait pas necessaire d’ecrire le type, char*
gets(nume); 
if ((pf=fopen("C:\\test.txt", "w"))==NULL) //ouvrir ou creer un fichier pour ecrire (ou sur-ecrire) 
//avec a au lieu de w on fait un ajout au contenu du fichier
   {
	printf("On ne peut pas ouvrir le fichier.\n");
	getch();
	exit(1); //sortie obligatoire du programme sans realiser
   }
puts("Ecrire un texte. Avec le caractere '$' finit:");
do {
	c=getchar(); //dans c on introduit un caractere du clavier
	putc(c,pf); //ou fputc(c,pf);
	} while (c !='$'); 
getchar();
fclose(pf);
}

2) Ecrire dans un fichier.
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main()
{
	
  char c;
  FILE *stream;				/*on declare stream (fluxe de dates)*/	
  stream = fopen("C:\\test.txt", "w");	/*ouvrir le fichier*/
  puts("Ecrire un texte. Avec le caractere '$' fermer:");
  do {
  c=getchar(); 			//dans c on introduit un caractere du clavier
	putc(c,stream); 	//ou fputc(c,pf);
	} while (c !='$');
	 getchar();  
  fclose(stream);		//fermer
}

3) Ecrire un programme pour lire d’un fichier tout caractere ASCII et afficher son contenu.
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main()
{
	FILE *pf;				/*on declare stream (flux de date)*/	
	pf = fopen("C:\\test.txt", "r");	/*ouvrir le fichier*/
 	char c,*nume;
	 if(pf == NULL)
	{
		printf ("Erreur");
		getch();
		exit(1);
	 } 
	printf("Donnez le nom du fichier du travail: "); 
	nume=(char*)malloc(20*sizeof(char));
	gets(nume); 
	c=fgetc(pf); 			//lire un caractere du fichier c=getc(pf)
	while (c!=EOF) 			// tester si c’est la fin du fichier
	{
		putchar(c); 		//afficher un caractere
		c=fgetc(pf);
	}
	fclose(pf);
	getchar();
}

4) Lire dans un fichier une chaine de caractere avec la fonction fread/ fgets.
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main()
{
	
  char s;
  FILE *stream;				/*declarer stream (flux de date)*/	
  stream = fopen("D:/test.txt", "r");	/*ouvrir le fichier*/
  if(stream == NULL)
  {
    printf ("On ne peut pas ouvrir le fichier.\n");
	getch();
	exit(1);
  }
  fread(&s, sizeof(char),100,stream);  //ou fgets(&s,100,stream);
  printf("%s", &s);
	 getchar();
  fclose(stream);			//fermer
}

5) Realiser un programme pour copier le contenu d’un fichier du disque dans un autre, avec un nom du programme.
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main()
{
	char chaine[256];
	FILE *lire, *ecrire;					
	lire = fopen("C:\\test.txt", "r");
	ecrire = fopen("D:/test.txt", "w");
	if(lire == NULL)
	{
		printf ("On ne peut pas ouvrir le fichier pour lire.\n");
		getch();
		exit(1);
	}
	fgets(chaine,sizeof(chaine),lire); /* lire une chaine pour arriver a la longueur de caracteres 
						specifiee dans le fichier de lire */
	fputs(chaine,ecrire);	/*ecrire la chaine de caracteres dans le fichier d’ecrire*/
	printf("Le texte copié est: %s", chaine);
	fclose(lire);
	fclose(ecrire);
	getchar();
}

6) En ndiquant on nombre d’octet, afficher le contenu du octet specifié et le reste du contenu du fichier du octet specifié.
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main()
{
  char s;
  FILE *stream;					/*declarer stream (fluxe de dates)*/	
  stream = fopen("D:/test.txt", "r");		/*ouvrir le fichier*/
  fseek (stream, (3)-1, SEEK_SET);
  if(stream == NULL)
  {
    printf ("On ne peut pas ouvrir le fichier.\n");
	getch();
	exit(1);
  }
  printf("\nL’Element de la pozition 3 est: %c.\n" , fgetc(stream));
	puts("\nLe reste du fichier de cette pozition est:");
	while (!feof(stream)) //tester si c’est la fin du fichier
	{
		printf("%c",fgetc(stream));
	}
	getchar();
	fclose(stream);	//fermer le fichier
}

7) Ecrire un programme pour calculer et afficher dans un fichier, avec la fonction fprintf.
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main()
{
	FILE *pf;
	pf = fopen("D:/test.txt", "r");
	int cant=20;
	float pret=2378.64;
	
	 if(pf == NULL)
	{
		printf ("Eroare");
		getch();
		exit(1);
	 }
		fprintf(pf, "\tTotalisant:\n");		//affiche le fichier
		fprintf(pf, "\t\tFranc: %14.2f\n",cant*pret);	//affiche le fichier
		printf("\tTotalisant:\n");			//affichée sur l'écran
		printf("\t\tFranc: %14.2f\n",cant*pret);		//affichée sur l'écran
		fclose(pf);
	getchar();
}

8) Dans le fichier "D:/test.txt" il y a plusieurs nombres separes par l’espace. Trier les elements du vecteur avec la metode d’echange (selection directe ou des verres), avec un fichier auxiliaire a.i. on va fermer le premier fichier et le nouveau recevra son nom.
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

void main()
{
	int n,i=0,j=0,temp,v[50];
	FILE *f,*g;
	if ((f=fopen("D:\\test.txt", "r"))==NULL)
		printf("Erreur a ouvrir le fichier de lire");
	else
		if ((g=fopen("C:\\nombres.txt","w"))==NULL)
		{
			printf("Erreur a ouvrir le fichier d’ecrire.txt");
			fclose(f);
		}
		else
		{
			while(!feof(f))
			{
				fscanf(f,"%d",&v[i]);
				i++;
			}
		n=i; // la valeur finale de i c’est le nombre des elements du vecteur
		//trier les elements du fichier
		for(i=0;i<n-1;i++)
		for(j=i+1;j<n;j++)
		if (v[j]<v[i])
		{
			temp=v[i];
			v[i]=v[j];
			v[j]=temp;
		}
		//afficher les elements du fichier
		for(i=0;i<n;i++)
		fprintf(g,"%5d",v[i]);
		fclose(f);
		remove("D:\\test.txt");
		fclose(g);
		rename("C:\\nombres.txt", "C:\\test.txt");
 
		printf("\nOperation faite");
	}
	getchar();
}

9) Lire un fichier texte avec des nombres entiers separes par l’espace ou ENTER. Afficher le minimum et le maximum des valeurs du fichier, et l’amplitude de la chaine des nombres (difference absolue entre les exrtremes).
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<limits.h>
void main()
{
	FILE *stream;				/*declarer stream (flux de date)*/	
	stream = fopen("D:\\test.txt", "r");	/*ouvrir le fichier*/
	if(stream == NULL)
	{		
		printf ("Erreur");
		getch();
		exit(1);
	 }
 
	int x; 				//variable pour retenir les nombres lus
	int maxim=-INT_MAX; 		//prenons le maximum comme le plus petit nombre entier
	int minim=INT_MAX; 		//le minimum sera le plus grand nombre entier

	while(!feof(stream))		//si n’est pas la fin du fichier
	{
		fscanf(stream,"%d",&x);	//lire la chaine des nombres et comparer avec x
		if (x>maxim)
			maxim=x;
		else
			if (x<minim)
				minim=x;
	}
	fclose(stream);
	printf("Maximum du fichier est: %d\n",maxim);
	printf("Minimum du fichier est: %d\n",minim);
	printf("L’amplitude du fichier est: %d\n",maxim-minim);
 
	getchar();
}

10) On supose un fichier texte ("vocale.txt") qui contient une chaine de caracteres. Contoriser l’apparition de chaque voyelle dans le fichier.
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<limits.h>
void main()
{
	char c;
	int a=0,e=0,i=0,o=0,u=0; //a=nombres d’apparitions de la voyelle "a", s.a.m.d.

	FILE *stream;					/*declarer stream (flux de date)*/	
	stream = fopen("D:\\vocale.txt ", "r");	/*ouvrir le fichier*/
	if(stream == NULL)
	{		
		printf ("Erreur");
		getch();
		exit(1);
	 }
	while(!feof(stream))		//si ce n’est pas la fin du fichier
	{
		fscanf(stream,"%c",&c);	//ou c=getc(f); ou c=fgetc(f); 
		switch(c)
		{
			case 'a': a++; break;
			case 'e': e++; break;
			case 'i': i++; break;
			case 'o': o++; break;
			case 'u': u++;
		};
	}
	fclose(stream);
	printf("Voyelle \"a\" est de %d fois.\n",a);
	printf("Voyelle \"e\" est de %d fois.\n",e);
	printf("Voyelle \"i\" est de %d fois.\n",i);
	printf("Voyelle \"o\" est de %d fois.\n",o);
	printf("Voyelle \"u\" est de %d fois.\n",u);
	getchar();
}
Cookies help us deliver our services. By using our services, you agree to our use of cookies.