Cours langage C entrées, sorties fichiers

 Extrait du cours langage C entrées, sorties fichiers

Utilisation avancée de printf
Retour de printf
valeur de retour=nombre de caractères
écrits sur la sortie standard
int main
(int argc,char* argv[]) {
int n=printf
(« command=%s\n »,argv[0]);
int i;
for (i=1;i<n;i++) {
printf(« -« );
}
printf(« \n »);
return 0;
}
retour négatif en cas d’erreur
très rare: sortie redirigée vers un fichier
et plus de place sur le disque
le système gère les cas où:
le support amovible est absent
le programme n’a pas les droits pour écrire
sur le fichier de redirection
Affichage des entiers
%d : entier signé
%u : entier non signé
%o : entier non signé en octal
%x %X : entier non signé en hexadécimal
int main(int argc,char* argv[]) {
int i=-45,j=43;
printf(« %d\n »,i);
printf(« %u\n »,i);
printf(« %o\n »,j);
printf(« %x\n »,j);
printf(« %X\n »,j);
return 0;
}
Affichage des réels
%f : standard, 6 décimales
%g : standard, sans les zéros finaux
%e %E : notation exponentielle
int main(int argc,char* argv[]) {
double f=345.575;
printf(« %f\n »,f);
printf(« %g\n »,f);
printf(« %e\n »,f);
printf(« %E\n »,f);
return 0;
}
Formats spéciaux
%p : affichage en hexadécimal des
adresses mémoires
%n : stocke le nombre de caractères déjà
écrits
int main(int argc,char* argv[]) {
int n;
double d=458.21;
printf(« %g%n »,d,&n);
printf(« =%d chars\n »,n);
printf(« &n=%p\n »,&n);
return 0;
}
Le gabarit
entier après le % = nombre minimum de
caractères à utiliser
printf complète avec des espaces si
nécessaire, ou des zéros si %0 avant un
nombre
int main(int argc,char* argv[]) {
printf(« %5d\n »,4);
printf(« %5d\n »,123456);
printf(« %5f\n »,3.1f);
printf(« %5s\n », »abc »);
printf(« %05d\n »,4);
return 0;
}
gabarit ≠ précision
Précision
%.3f : 3 décimales
règle d’arrondi
compatible avec un gabarit
int main(int argc,char* argv[]) {
double f=3.14159265;
printf(« %.3f\n »,f);
printf(« %08.3f\n »,f);
printf(« %.4e\n »,f);
return 0;
}
$>./a.out
3.142
0003.142
3.1416e+000
Gabarit et précision variables
si on ne les connaît pas à la compilation:
* au lieu d’un entier + variable en argument
de printf
int main(int argc,char* argv[]) {
int i,tmp;
int max=0;
for (i=0;i<argc;i++) {
tmp=strlen(argv[i]);
if (tmp>max) max=tmp;
}
for (i=0;i<argc;i++) {
printf(« arg #%d=%*s\n »,i,max,argv[i]);
}
return 0;
}
$>./t is the command
arg #0= ./t
arg #1= is
arg #2= the
arg #3=command

……….

Si le lien ne fonctionne pas correctement, veuillez nous contacter (mentionner le lien dans votre message)
Cours langage C entrées, sorties fichiers (312 KO) (Cours PDF)
Cours langage C

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *