Langage C : retour à la ligne non voulu
Fermé
Arnaud
-
23 juin 2009 à 06:53
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 28 juin 2009 à 13:45
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 28 juin 2009 à 13:45
A voir également:
- C retour a la ligne
- Langage ascii - Guide
- Langage binaire - Guide
- Pascal langage - Télécharger - Édition & Programmation
- Langage pascal - Télécharger - Édition & Programmation
- Delphi (langage) - Télécharger - Langages
2 réponses
Utilisateur anonyme
28 juin 2009 à 11:53
28 juin 2009 à 11:53
Bonjour,
Un peu tard peut être. N'y aurait-il pas un schmilblic avec la chaîne de formatage utilisée dans fscanf (fscanf(vf1,"%i:%i:%i",&time[i][1] ...) ? Les données reçues du fichier csv sont en caractères et le flag %i fait la conversion en entier (sauf erreur). Si c'est le cas, le caractère 9 devient une tabulation (ce qui n'est pas un retour chariot, je suis d'accord). Si c'est pour simplement afficher les données, pourquoi ne pas tout traiter sous forme de chaîne de caractères ?
Un peu tard peut être. N'y aurait-il pas un schmilblic avec la chaîne de formatage utilisée dans fscanf (fscanf(vf1,"%i:%i:%i",&time[i][1] ...) ? Les données reçues du fichier csv sont en caractères et le flag %i fait la conversion en entier (sauf erreur). Si c'est le cas, le caractère 9 devient une tabulation (ce qui n'est pas un retour chariot, je suis d'accord). Si c'est pour simplement afficher les données, pourquoi ne pas tout traiter sous forme de chaîne de caractères ?
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
28 juin 2009 à 13:45
28 juin 2009 à 13:45
Salut,
Pourrais-tu donner un peu plus de ton code comme la déclaration des variables. Le top serait d'avoir le main qui va avec.
Et peux-tu ré-expliquer ton problème des 8 et 9, car je ne vois pas ce qui ne va pas avec ta trace d'exécution (hormis le fait qu'il n'y a pas correspondance avec les valeurs lues dans le CSV).
Sinon déjà en conseil, enlève le '\n' de tes fscanf.
Voici un code fonctionnel :
Cdlt
Pourrais-tu donner un peu plus de ton code comme la déclaration des variables. Le top serait d'avoir le main qui va avec.
Et peux-tu ré-expliquer ton problème des 8 et 9, car je ne vois pas ce qui ne va pas avec ta trace d'exécution (hormis le fait qu'il n'y a pas correspondance avec les valeurs lues dans le CSV).
Sinon déjà en conseil, enlève le '\n' de tes fscanf.
Voici un code fonctionnel :
#include <stdio.h> #include <stdlib.h> int main(void) { FILE *fp=fopen("a.tmp","r"); if(fp==NULL) { fputs("erreur ouverture fichier\n",stderr); return EXIT_FAILURE; }else { int time[15][3]; double particle[15],positive[15],negative[15],AE[15]; int i=0; while(!feof(fp)) { if(fscanf(fp,"%d:%d:%d;%lf;%lf;%lf;%lf", &time[i][1],&time[i][2],&time[i][3],particle+i, positive+i,negative+i,AE+i)==7) { printf("time : %d : %d : %d\n",time[i][1],time[i][2],time[i][3]); printf("line : %.1f,%.1f,%.1f,%.1f\n",particle[i],positive[i],negative[i],AE[i]); i++; } } fclose(fp),fp=NULL; } return 0; }
Cdlt
28 juin 2009 à 13:42
Ben c'est une erreur ^^.
Le caractère sera bien représenté en nombre avec %i, il n'y a pas de souci à ce niveau.
Cdlt