-1
我的代碼的這一部分是關於註冊。如何在動態二維數組中保存字符串?
我只能註冊一次,下一次程序停止。
什麼問題?
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;
}
}
[不要使用'gets()',這是危險的](http://stackoverflow.com/q/1694036/2173917)。改用['fgets()'](https://linux.die.net/man/3/fgets)。 –
'免費(緩衝區);'!? – BLUEPIXY
我在這裏看到的是非常危險的代碼和漏洞。我沒有足夠精通C語言來解決修復問題,而沒有引入其他錯誤,但在free,gets()問題後有一個用法,而且我看不到任何管理(計數)引用的方式,因此泄漏和錯誤很可能會發生。 – gelliott181