Ignorer le retour à la ligne

Sasori62 -  
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonsoir!

J'ai crée une petite fonction qui lit dans un fichier des caractères et les renvoie à une autre fonction.

Tout marche très bien sur la première ligne mais dès qu'il s'agit de passer à la deuxième je reçois un segmentation fault de la part de l'autre fonction parce qu'il veut des caracteres et non des espaces.

Le bout de fonction concerné:

"
char caractere;


fscanf(nomFichier,"%c",&(caractere));


return caractere;
"

et en gros le fichier dans lequel il lit est typiquement de cette forme :

"
00RRRJB0

0HRDZDC

DEFE215F

"

Ce qui pose donc problème c'est qu'après le 0 de la première ligne il ne lit pas le 0 de la deuxième ligne mais un "espace" et ca fait donc bugger le reste du programme.
Des solutions pour moi?

Merci beaucoup :)

2 réponses

BunoCS Messages postés 15952 Date d'inscription   Statut Modérateur Dernière intervention   3 918
 
Hello,
A toi de vérifier le caractère lu avant de le retourner, non?
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
Salut,

Si les informations utiles de ton fichier sont seulement des lettres et des chiffres, tu peux utiliser la fonction isalnum pour vérifier si le caractère lu est alphanumérique (définie dans ctype.h) : http://www.cplusplus.com/reference/cctype/isalnum/

Avec un fichier contenant :


00RRRJB0

0HRDZDC

DEFE215F


Le code suivant :

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

int lire_prochaine_donnee(FILE * pFile)
{
    int c;

    do
    {
        c = fgetc(pFile);
    } while (!(isalnum(c)) && (c != EOF));

    return c;
}

int main(void)
{
    FILE *pFile;
    int c = ' ';

    pFile = fopen("C:\\Documents and Settings\\Raoul\\Bureau\\Compilateurs\\eclipse\\Workspace\\CCM01\\Debug\\sasori.txt", "r");
    if (pFile == NULL )
    {
        perror("Unable to open file.");
        return EXIT_FAILURE;
    }
    while (c != EOF)
    {
        c = lire_prochaine_donnee(pFile);
        if (c != EOF)
            printf("%c", c);
    }
    fclose(pFile);

    return 0;
}


Donne ceci :

00RRRJB00HRDZDCDEFE215F


Dal
0