Bonjour,
Je suis le tuto sur développez.com et je vois que gets est utilisé ?
?
Version imprimable
Bonjour,
Je suis le tuto sur développez.com et je vois que gets est utilisé ?
?
regarde aussi ici : http://c.developpez.com/cours/, il y a d'autres tutoriels
mais maintenant, il est plutôt déconseillé d'utiliser gets(). On préfère un fgets(stdin) qui permet d'éviter les problèmes du buffer overflow en controlant la taille du buffer de réception.
Ok
Sinon il ne faut vraiment pas utiliser gets ? Et donc dans cet exemple :
Je dois remplacer gets(CH1) par fgets(CH1,100,stdin) ?Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 #include <stdio.h> #include <string.h> main() { /* Déclarations */ char CH1[100], CH2[100]; /* chaînes données */ char CH3[100]=""; /* chaîne résultat */ /* Saisie des données */ printf("Introduisez la première chaîne de caractères : "); gets(CH1); printf("Introduisez la deuxième chaîne de caractères : "); gets(CH2); /* Traitements */ strncpy(CH3, CH1, strlen(CH1)/2); strncat(CH3, CH2, strlen(CH2)/2); /* Affichage du résultat */ printf("Un demi \"%s\" plus un demi \"%s\" donne \"%s\"\n", CH1, CH2, CH3); return 0; }
Merci
J'ai regardé aussi la pge de strlen dans le man et c'est marqué :
Je comprends pas size_t strlen ? Que veut dire size_t ?Citation:
SYNOPSIS
#include <string.h>
size_t strlen (const char *s);
Donc c'est le type du résultat de la fonction strlen ?
ça renvoit donc un unsigned integer ?
J'ai du mal à utiliser le man en fait :(
oui
Tant mieux, oublie le man et tourne toi vers la norme, bien plus fiable ;).
Elle n'a pas l'air très facile non plus à comprendre la norme ?