Bonsoir
On m'avait indiqué une fonction pour évité de débordement de scanf("%s",ch) en indiquant le nombre de caractères maximal pour la chaîne de caractères. Quelle est-elle ? Je n'arrive plus à la trouver![]()
Bonsoir
On m'avait indiqué une fonction pour évité de débordement de scanf("%s",ch) en indiquant le nombre de caractères maximal pour la chaîne de caractères. Quelle est-elle ? Je n'arrive plus à la trouver![]()
Modérateur Mageia/Mandriva Linux
Amicalement VOOotre
Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
Mes tutoriels : xrandr, algorigramme et C, xml et gtk...
Salut
Je connais pas trop scanf, mais si c'est comme printf, ca doit être quelquechose comme
Code : Sélectionner tout - Visualiser dans une fenêtre à part scanf ("%20s", ptr);
Attention, le 20 inclus le 0 final...Envoyé par Gruik
Pour savoir comment utiliser scanf() de manière sécurisée, il y a un petit tutoriel ici![]()
Je viens de tester :Ça marche
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 #include "stdio.h" void main() { char CHN[20]; scanf("%5s",CHN); printf("%s",CHN); }![]()
Modérateur Mageia/Mandriva Linux
Amicalement VOOotre
Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
Mes tutoriels : xrandr, algorigramme et C, xml et gtk...
fgets... Pourquoi pas, mais je ne maîtrise pas le FILE * stream...
Un exemple ?
Tant de réponse pendant mon test !
Merci![]()
Modérateur Mageia/Mandriva Linux
Amicalement VOOotre
Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
Mes tutoriels : xrandr, algorigramme et C, xml et gtk...
je suggere
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #include "stdio.h" int main() { char CHN[20]; fgets(CHN, sizeof CHN, stdin); CHN[strlen(CHN) -1] = '\0'; /* Mais Emdel va te sortir sa super fonction clean() */ fputs (CHN, stdout); return 0; }
fgets(b, sizeof b, stdin); ou fgets(b, sizeof b -1, stdin);
nb : j'aurais mis des () à sizeof ? Ça me rassurait quant à la priorité des opérations !
Modérateur Mageia/Mandriva Linux
Amicalement VOOotre
Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
Mes tutoriels : xrandr, algorigramme et C, xml et gtk...
Oui, car le '\n' n'est pas forcément là. Il faut donc une action plus, disons, adaptative...Envoyé par Gruik
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 static void clean (char *s, FILE *fp) { /* search ... */ char *p = strchr (s, '\n'); /* <string.h> */ if (p != NULL) { /* ... and kill */ *p = 0; } else { /* purge */ int c; while ((c = fgetc(fp)) != '\n' && c != EOF) { } } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 fgets(CHN, sizeof CHN, stdin); clean(CHN, stdin);
Partager