Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Lire chaine de caractère



  1. #1
    celine2

    Unhappy Lire chaine de caractère


    ------

    Bonjour,

    J’ai besoin d’écrire un programme en c permettant de lire de chaines de caractères dans un fichier .txt. Les données dans le fichier sont présentées à l’intérieur de la manière suivante :

    Code:
    0      0.000               0.000
    1      -90.618         299.859 
    2      -480.287        -366.363
    3      -106.647        -202.037
    4      -134.373        -364.665
    5      -196.116        -43.097
    6      455.724         -383.012
    7      -232.731        -467.685
    8      -138.385        -61.276
    9       247.014        -461.857
    10      74.257         373.238
    11      -95.265        164.968
    12      -211.651       -147.830
    13      -265.178       499.830
    14      -126.376       330.654
    15      -267.075       499.830
    16      -486.620       56.890
    17      -368.762       -466.753
    18      66.033         -456.440
    19      234.876         57.177
    20      22.466          -236.939
    21      349.490         -205.735
    22        302.043         -70.028
    23        23.194          432.094
    24       384.468          11.208
    Ensuite je dois les afficher sur l’écran.

    Voici le code que j’ai fait.
    Code:
    #include<stdio.h>
    #include <stdlib.h>
    
    
    
     struct Client
    {
    	double x;	//abscisse
    	double y;           //ordonnée
    
    };
    
    
    struct Client k[26];
    int main()
    {
    
    	FILE *file = NULL;
    	int i; 
    		
    	if((file = fopen("D:\\donnees.txt", "r") == NULL)/*ouverture du fichier en lecture*/
    		printf("Error: impossible d'ouvrir fichier donnees.txt\n");
    	
    	else//non
    	
    	
    	{
    		while(fgets(struct Client, 26, file)!= NULL)
    		
    		{
    			
    			             for(i=0;i<26;i++)
    				printf("%f %f",k[i].x,k[i].y);
    			    	    
    			
    		}
    	}
    	fclose(file);	
    	
    	    			
    getchar(); 
    return(0);
    }
    Le programme ne se compile pas. Je ne vois pas où l'erreur.Quelqu’un pourrait-il m’aider ?
    Merci.

    -----
    Langage C: en autodidacte,Pseudo: Ma chanteuse préférée.J'apprends le français.

  2. Publicité
  3. #2
    whoami

    Re : Lire chaine de caractère

    Bonjour,

    Relis ton code soigneusement, et/ou exécute-le manuellement pas à pas : il n'est pas cohérent avec ce que tu penses qu'il fait.

  4. #3
    doul11

    Re : Lire chaine de caractère

    Bonsoir,

    dit moi celine2 quel age tu as ? ...

    ... si tu me réponds 85 ans je comprendrais que tu as des trous de mémoires, sinon je comprend pas, il y a peut de temps je t'ai donné tout un code de lecture avec les test minimums pour que ça marche bien -> http://forums.futura-sciences.com/pr...ml#post3385631
    La logique est une méthode systématique d’arriver en confiance à la mauvaise conclusion.

  5. #4
    celine2

    Question Re : Lire chaine de caractère

    Citation Envoyé par doul11 Voir le message
    Bonsoir,

    dit moi celine2 quel age tu as ? ...

    ... si tu me réponds 85 ans je comprendrais que tu as des trous de mémoires, sinon je comprend pas, il y a peut de temps je t'ai donné tout un code de lecture avec les test minimums pour que ça marche bien -> http://forums.futura-sciences.com/pr...ml#post3385631
    Excusez-moi pour le dérangement.
    J'ai essayé avec le meme code pour le cas de 25 lignes.Mais il m'affiche un message "erreur de lecture du fichier".Je ne sais pas où il est l'erreur.Peut etre à cause de fscanf et test du fin de fichier?

    Je suis débutante et je cherche à apprendre des gens comme vous.
    Merci pour vos aides.
    Code:
    #include<stdio.h>
    
    typedef struct
    {
    	double x; //abscisse
    	double y; //ordonnée
    
    }Client;
    
    int main()
    {
    int i,j,z;
    Client k[25];
    FILE *file = NULL;
    
    if((file = fopen("D:\\Codes_Thèse\\calcul_distance_euclidienne\\calcul_distance_euclidienne\\donnees.txt", "r")) == NULL)
    	{
    	perror("impossible d'ouvrir fichier donnees.txt");
    	}
    
    else
    	{
    			
    	for(i=0;i<25;i++)
    		{
    		j=fscanf(file,"%i %i %i\n",&z,&k[i].x,&k[i].y);
    		
    		if(j==EOF)
    			{
    			printf("fin de fichier !\n");
    			break;
    			}
    			
    		if(j!=24)
    			{
    			printf("erreur de lecture dans le fichier a la ligne %i\n");
    			break;
    			}
    		
    		printf("client[%i]\n\tx=%i\n\ty=%i\n", i, k[i].x,k[i].y);
    		}
    
    	fclose(file);
    	printf("\nfin de lecture\n");
    	}
    getchar();   
    return(0);
    }
    Langage C: en autodidacte,Pseudo: Ma chanteuse préférée.J'apprends le français.

  6. A voir en vidéo sur Futura
  7. #5
    doul11

    Re : Lire chaine de caractère

    Citation Envoyé par celine2 Voir le message
    Excusez-moi pour le dérangement.
    Arrête de t'excuser, ça m'énerve ! si ça me dérangerais de répondre, je ne le ferais pas point.

    Si tu veut tu n'est pas obligée de me vouvoyer, je te tutoie et tu peut faire de même !


    J'ai essayé avec le meme code pour le cas de 25 lignes.Mais il m'affiche un message "erreur de lecture du fichier".Je ne sais pas où il est l'erreur.Peut etre à cause de fscanf et test du fin de fichier?
    Ce n'est pas la fin de fichier, sinon le programme dirais "fin de fichier", c'est a ça que ça sert des massages d'erreurs explicites, si le programme dit "erreur de lecture du fichier" c'est un problème avec scanf, le programme dit a quelle ligne est le problème, je parie que c'est a la première ! scanf n'arrive pas a lire ce que tu lui demande, moi je vois pourquoi, mais toi tu voit quel est le problème ?

    pour te mettre sur la piste : que-ce que scnaf essaye de lire ? et que-ce qu'il y a dans le fichier de donnée ?
    La logique est une méthode systématique d’arriver en confiance à la mauvaise conclusion.

  8. #6
    bzh_nicolas

    Re : Lire chaine de caractère

    Il y a un autre problème :
    Regarde ce que retourne la fonction fscanf et avec quelle valeur tu compare ce qui est retourné ensuite, tu devrais trouver la solution.
    Dernière modification par bzh_nicolas ; 31/01/2011 à 21h09. Motif: Correction j'ai dit une bêtise...

  9. Publicité

Discussions similaires

  1. chercher une chaine de caractère dans un texte en Langage C
    Par lui dans le forum Programmation et langages, Algorithmique
    Réponses: 17
    Dernier message: 10/12/2010, 00h01
  2. copie de chaine et changements de caractere en C
    Par gdm dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 19/10/2009, 08h08
  3. Chaine de caractère C++
    Par lui dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 06/03/2008, 20h29
  4. Fonction retournant une chaine de caractère
    Par youril dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 05/09/2007, 21h28
  5. [C++] Exploiter une chaîne de caractère lue au clavier
    Par Gwyddon dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 24/06/2006, 23h47