Comment lire une chaine de caractère en C?
Résolu
Moustikos54
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour à tous,
Comme je l'ai dit dans le titre, j'aimerais savoir comment lire une chaine de caractère en C.
Je vous explique mon problème, j'ai écrit un programme qui lit des codes dans une base de données en CSV et qui les stocke dans un tableau de type char code.
Chaque code est composé de 4 caractères que j'aimerais comparer un par un à 4 autres variables de type char rentrés par l'utilisateur.
Pourriez-vous m'aider?
Merci.
Comme je l'ai dit dans le titre, j'aimerais savoir comment lire une chaine de caractère en C.
Je vous explique mon problème, j'ai écrit un programme qui lit des codes dans une base de données en CSV et qui les stocke dans un tableau de type char code.
Chaque code est composé de 4 caractères que j'aimerais comparer un par un à 4 autres variables de type char rentrés par l'utilisateur.
Pourriez-vous m'aider?
Merci.
A voir également:
- Comment lire une chaine de caractère en C?
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Caractère ascii - Guide
- Lire epub - Guide
- Caractère spéciaux - Guide
- Caractere speciaux - Guide
3 réponses
salut,
Pour avoir une chaine de caractère en c, c'est un tableau (de caractères). Dans ton cas la longueur est fixe donc ca va pas être top compliqué. (char[4] maChaine). La comparaison se fera soit via une boucle : tu compares tes caractères un par un, soit grâce à la fonction "strcmp" (je te laisse chercher. ATTENTION je pense que le strcmp s'appuie sur la position du caractère 'fin de chaine', soit '\0', il te faudra donc un tableau de 5 caractère, le dernier étant '\0').
Pour ce qui est de la lecture de fichier, il te faudra regarde du côté de la classe FILE, avec les méthodes fopen, fread, fclose, etc.).
Question : pourquoi ne pas utiliser de c# ? (ou un autre langage plus accessible)
naga
Pour avoir une chaine de caractère en c, c'est un tableau (de caractères). Dans ton cas la longueur est fixe donc ca va pas être top compliqué. (char[4] maChaine). La comparaison se fera soit via une boucle : tu compares tes caractères un par un, soit grâce à la fonction "strcmp" (je te laisse chercher. ATTENTION je pense que le strcmp s'appuie sur la position du caractère 'fin de chaine', soit '\0', il te faudra donc un tableau de 5 caractère, le dernier étant '\0').
Pour ce qui est de la lecture de fichier, il te faudra regarde du côté de la classe FILE, avec les méthodes fopen, fread, fclose, etc.).
Question : pourquoi ne pas utiliser de c# ? (ou un autre langage plus accessible)
naga
Salut Moustikos54,
j'aimerais savoir comment lire une chaine de caractère en C.
lire à partir de quoi : du clavier en mode terminal ? d'un fichier ? d'autre chose ?
Je vous explique mon problème, j'ai écrit un programme qui lit des codes dans une base de données en CSV et qui les stocke dans un tableau de type char code.
Félicitations :-)
Tu parles du type "char code", qui n'est pas un type standard du C. Alors je ne vois pas très bien quel est le type.
Chaque code est composé de 4 caractères
ok, mais cela ne nous dit pas comment tu les stockes en mémoire (cf. les contributions de nagashima et de Twinuts).
que j'aimerais comparer un par un à 4 autres variables de type char rentrés par l'utilisateur.
Si par "4 autres variables de type char" tu veux parler de 4 chaînes de caractères C contenant au plus 4 caractères chacune, saisies par l'utilisateur au clavier dans un programme en mode terminal, tu peux faire la saisie comme cela :
Dal
j'aimerais savoir comment lire une chaine de caractère en C.
lire à partir de quoi : du clavier en mode terminal ? d'un fichier ? d'autre chose ?
Je vous explique mon problème, j'ai écrit un programme qui lit des codes dans une base de données en CSV et qui les stocke dans un tableau de type char code.
Félicitations :-)
Tu parles du type "char code", qui n'est pas un type standard du C. Alors je ne vois pas très bien quel est le type.
Chaque code est composé de 4 caractères
ok, mais cela ne nous dit pas comment tu les stockes en mémoire (cf. les contributions de nagashima et de Twinuts).
que j'aimerais comparer un par un à 4 autres variables de type char rentrés par l'utilisateur.
Si par "4 autres variables de type char" tu veux parler de 4 chaînes de caractères C contenant au plus 4 caractères chacune, saisies par l'utilisateur au clavier dans un programme en mode terminal, tu peux faire la saisie comme cela :
#include <stdio.h> #include <string.h> int main(void) { char saisie[4][5]; /* 4 tableaux de 5 chars */ char *p; /* pour avoir un pointeur sur l'éventuel \n récupéré */ char c; /* pour vider stdin */ int n; printf("Veuillez saisir 4 codes de 4 caractères au plus " "(les saisies plus longues sont tronquées à 4 caractères).\n"); for (n= 0; n<4; n++) { do { printf("saisie %d :\n", n + 1); if (fgets(saisie[n], 5, stdin) != NULL) if ((p = strchr(saisie[n], '\n')) != NULL) *p = '\0'; if (strlen(saisie[n]) < 4) printf("Erreur, votre saisie comporte moins de " "4 caractères, veuillez recommencer\n"); else while ((c = getchar()) != '\n' && c != EOF) /* purger stdin */ ; } while (strlen(saisie[n]) < 4); } printf("Merci, voici vos 4 saisies :\n"); for (n= 0; n<4; n++) printf("saisie %d = [%s]\n", n + 1, saisie[n]); return 0; }
Dal
D'abord merci à tous pour vos réponses!
Dal, j'ai déclaré quatre tableaux (tab1[] tab2[]...) dans lesquels sont rentrés les caractères: A B(jusqu'à) Z 1 2 3 (jusqu'à) 9. Lorsque l'utilisateur clique sur les zones appropriées de l'écran, il peut modifier le caractère affiché à l'écran. J'aimerais donc comparer le premier caractère sélectionné par l'utilisateur à la première lettre du code et ainsi de suite.
PS: Je me suis trompé tout à l'heure, je voulais dire char et non char code.
Je ne peux pas utiliser le C# car c'est un travail imposé par mon école.
Merci beaucoup!
Dal, j'ai déclaré quatre tableaux (tab1[] tab2[]...) dans lesquels sont rentrés les caractères: A B(jusqu'à) Z 1 2 3 (jusqu'à) 9. Lorsque l'utilisateur clique sur les zones appropriées de l'écran, il peut modifier le caractère affiché à l'écran. J'aimerais donc comparer le premier caractère sélectionné par l'utilisateur à la première lettre du code et ainsi de suite.
PS: Je me suis trompé tout à l'heure, je voulais dire char et non char code.
Je ne peux pas utiliser le C# car c'est un travail imposé par mon école.
Merci beaucoup!
j'ai déclaré quatre tableaux (tab1[] tab2[]...) dans lesquels sont rentrés les caractères: A B(jusqu'à) Z 1 2 3 (jusqu'à) 9.
Oui, tu peux déclarer 4 tableaux pour accueillir tes 4 chaînes de caractères, au lieu d'un tableau à deux dimensions comme dans mon code.
Cependant, il faudra les déclarer avec une taille :
Lorsque l'utilisateur clique sur les zones appropriées de l'écran, il peut modifier le caractère affiché à l'écran. J'aimerais donc comparer le premier caractère sélectionné par l'utilisateur à la première lettre du code et ainsi de suite.
Ah, et tu veux savoir comment récupérer la valeur de ce premier caractère sélectionné par l'utilisateur, du second, etc., pour les comparer à d'autres ?
Donc ton programme gère la souris, gère la modification de l'affichage d'une interface utilisateur à l'écran. Cela signifie que tu ne fais pas du C standard, et que la lecture des valeurs sélectionnées par l'utilisateur va dépendre de la façon dont tu gères ton interface utilisateur, ce qu'il nous est impossible de deviner si tu ne nous dis rien.
On est un peu loin de ta question initiale "Comment lire une chaine de caractère en C?".
Peut-être que si tu postais un bout de ton code, on y verrait plus clair. Là, pour moi, c'est le brouillard.
Dal
Oui, tu peux déclarer 4 tableaux pour accueillir tes 4 chaînes de caractères, au lieu d'un tableau à deux dimensions comme dans mon code.
Cependant, il faudra les déclarer avec une taille :
char tab1[5];pour stocker les 4 caractères plus le '\0' terminal, ou
char tab1[4];si tu stockes juste 4 caractères.
Lorsque l'utilisateur clique sur les zones appropriées de l'écran, il peut modifier le caractère affiché à l'écran. J'aimerais donc comparer le premier caractère sélectionné par l'utilisateur à la première lettre du code et ainsi de suite.
Ah, et tu veux savoir comment récupérer la valeur de ce premier caractère sélectionné par l'utilisateur, du second, etc., pour les comparer à d'autres ?
Donc ton programme gère la souris, gère la modification de l'affichage d'une interface utilisateur à l'écran. Cela signifie que tu ne fais pas du C standard, et que la lecture des valeurs sélectionnées par l'utilisateur va dépendre de la façon dont tu gères ton interface utilisateur, ce qu'il nous est impossible de deviner si tu ne nous dis rien.
On est un peu loin de ta question initiale "Comment lire une chaine de caractère en C?".
Peut-être que si tu postais un bout de ton code, on y verrait plus clair. Là, pour moi, c'est le brouillard.
Dal
"ATTENTION je pense que le strcmp s'appuie sur la position du caractère 'fin de chaine', soit '\0', il te faudra donc un tableau de 5 caractère, le dernier étant '\0'). "
>>Par forcément tu peux toujours utiliser strncmp en lui précisant la longueur.