Sans l'utilisation de printf et scanf pour entrer une chaîne de caractères, quel(s) autre(s) manière(s) puis-je utiliser dans le langage C pour accomplir cela? Merci
Sans l'utilisation de printf et scanf pour entrer une chaîne de caractères, quel(s) autre(s) manière(s) puis-je utiliser dans le langage C pour accomplir cela? Merci
Tu peux utiliser les fonctions de la famille gets pour la lecture. C'est d'ailleurs plus simple et moins dangereux à utiliser que scanf.
L'avantage de scanf est le formatage de la chaine en entrée, mais l'inconvénient est que mal maitrisée et utilisée, elle transforme ton programme en source de buffer overflow.
Attention, la famille de *gets contient/contenait une fonction à ne surtout pas utiliser: gets elle-même.
Tu peux aussi écrire directement dans le tableau: un char est un type entier, chaque case est accessible normalement.
Par exemple
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 char tab[20]=""; // initialisation avec la chaine vide. tab[0]='a'; tab[1]='b'; tab[2]='c'; tab[3]='\0'; printf("tab contient %s", tab);
tab[0]="a"; vraiment, ternel..? Tu es amoureuse en ce moment ?
En fait gets ne contrôle pas le débordement, par contre fgets le fait. Il faudra spécifier la taille max du buffer.
Par ailleurs gets/fgets s'interrompent lors d'un retour chariot ou EOF. Il faut penser que la chaine pourra se terminer par un \n.
Attention : gets n'est pas à fgets ce que sprintf est à snprintf, par exemple. On peut utiliser sprintf de manière sûre alors qu'il n'existe aucun moyen d'utiliser gets de manière sûre.
gets n'est pas une alternative. Il ne faut jamais l'employer.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager