Cette partie de mon code concerne l'inscription.Comment puis-je enregistrer une chaîne dans un tableau 2D dynamique?
Je ne peux m'inscrire qu'une seule fois, la prochaine fois que le programme s'arrête.
Quel est le problème?
while (1) { /*usercounter initialized with 0*/
printf("enter your order:\n");
gets(buffer);
order = strtok(buffer, " ");
if (strcmp(order, "signup") == 0) {
usercounter++;
if (usercounter > 50) {
username=realloc(username,usercounter*sizeof(*username));
password=realloc(password, usercounter*sizeof(*password));
}
username[(usercounter - 1)] = (char *)malloc(50*sizeof(char));
strcpy(username[usercounter - 1], strtok(NULL, " "));
password[(usercounter - 1)] = (char *)malloc(50*sizeof(char));
strcpy(password[usercounter - 1], strtok(NULL, "\n"));
free(buffer);
continue;
}
}
[N'utilisez PAS 'gets()', c'est dangereux] (http://stackoverflow.com/q/1694036/2173917). utilisez plutôt ['fgets()'] (https://linux.die.net/man/3/fgets) à la place. –
'free (buffer);'!? – BLUEPIXY
Tout ce que je vois ici est un code très dangereux et des exploits. Je ne connais pas assez C pour couvrir les correctifs sans introduire d'autres bugs, mais il y a une utilisation après free, gets(), et je ne vois pas comment vous gérez (comptage) vos références donc des fuites et des failles sont susceptibles de se produire. – gelliott181