Aide compréhension programme en C
JustinBalle67
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
JustinBalle67 Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
JustinBalle67 Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis débutant en programmation et on m'a filé un programme en C que je n'arrive pas très bien à comprendre, notamment les "if" avec les arguments ainsi que la dernière ligne (%05.1lf\t| %010.6lf\t| %012.6lf\t| %012.6lf\). Merci de votre aide.
Je suis débutant en programmation et on m'a filé un programme en C que je n'arrive pas très bien à comprendre, notamment les "if" avec les arguments ainsi que la dernière ligne (%05.1lf\t| %010.6lf\t| %012.6lf\t| %012.6lf\). Merci de votre aide.
#include<stdio.h>
#include<stdlib.h>
int main(int argc, char * argv [])
{
double laf, temp, st, ast;
char c;
FILE *in, *out;
if(argc>1)
in = fopen(argv[1], "r");
if(argc==1 || in == NULL)
in = fopen("in.xml", "r");
if (in == NULL) {
fprintf(stderr, "Erreur in\n");
exit(1);
}
if(argc>2)
out = fopen(argv[2], "w");
if(argc<=2 || in == NULL)
out = fopen("out.txt", "w");
if (out == NULL) {
fprintf(stderr, "Erreur out\n");
exit(1);
}
else
{
fprintf(out, "| LAF\t| Temperature\t| Stokes \t\t\t| Antistokes\t\t|\n|\t\t|\t\t\t\t|\t\t\t\t\t|\t\t\t\t|\n"); // structure tab
while ((c = fgetc(in)) != EOF)
{
if(fscanf(in, "<data id=\"1\">%lf,%lf,%lf,%lf</data>", &laf, &temp, &st, &ast) == 4)
fprintf(out, "| %05.1lf\t| %010.6lf\t| %012.6lf\t| %012.6lf\t|\n|\t\t|\t\t\t\t|\t\t\t\t\t|\t\t\t\t|\n", laf, temp, st, ast);
}
return 0;
}
A voir également:
- Aide compréhension programme en C
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Message programmé iphone - Guide
- Programme word gratuit - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
3 réponses
Tu peux lire ceci :
https://openclassrooms.com/courses/les-parametres-de-la-fonction-main
et ceci pour les formats de printf :
http://www.cplusplus.com/reference/cstdio/printf/
des questions ?
https://openclassrooms.com/courses/les-parametres-de-la-fonction-main
et ceci pour les formats de printf :
http://www.cplusplus.com/reference/cstdio/printf/
des questions ?
Bonjour,
argc vaut 1 si l'utilisateur lance le programme sans argument.
argc vaut 2 si l'utilisateur lance le programme avec 1 argument.
etc.
if(argc>1)
in = fopen(argv[1], "r");
Donc, cela signifie que si l'utilisateur lance le programme avec des arguments (1 ou plus), le programme tentera d'ouvrir le fichier mentionné en 1er paramètre.
if(argc==1 || in == NULL)
Cela signifie : si l'utilisateur a lancé le programme sans paramètre OU que in vaut NULL (la lecture précédente du fichier a échoué (par exemple fichier inexistant).
fprintf(out, "| %05.1lf\t| %010.6lf\t| %012.6lf\t| %012.6lf\t|\n|\t\t|\t\t\t\t|\t\t\t\t\t|\t\t\t\t|\n", laf, temp, st, ast);
%lf n'est pas bon. Il faut utiliser %f.
Sinon, cela permet de faire du formatage. Par exemple %05.1lf signifie qu'on affiche la partie entière sur 5 positions en paddant avec des 0 à gauche et une décimale.
Cdlt,
argc vaut 1 si l'utilisateur lance le programme sans argument.
argc vaut 2 si l'utilisateur lance le programme avec 1 argument.
etc.
if(argc>1)
in = fopen(argv[1], "r");
Donc, cela signifie que si l'utilisateur lance le programme avec des arguments (1 ou plus), le programme tentera d'ouvrir le fichier mentionné en 1er paramètre.
if(argc==1 || in == NULL)
Cela signifie : si l'utilisateur a lancé le programme sans paramètre OU que in vaut NULL (la lecture précédente du fichier a échoué (par exemple fichier inexistant).
fprintf(out, "| %05.1lf\t| %010.6lf\t| %012.6lf\t| %012.6lf\t|\n|\t\t|\t\t\t\t|\t\t\t\t\t|\t\t\t\t|\n", laf, temp, st, ast);
%lf n'est pas bon. Il faut utiliser %f.
Sinon, cela permet de faire du formatage. Par exemple %05.1lf signifie qu'on affiche la partie entière sur 5 positions en paddant avec des 0 à gauche et une décimale.
Cdlt,