這是我的代碼:
的malloc + FGETS動態分配
int main(int argc, char *argv[]){
FILE *fp;
char *tmp, *tmp2, *user, *pass, *line;
printf("Inserire utente: "); scanf("%ms", &user); /* scanf %ms alloca dinamicamente la memoria */
printf("Inserire password: "); scanf("%ms", &pass);
line = malloc((strlen(user)+strlen(pass)) * sizeof(char)); /* DUBBIOOOOOOOOOO */
fp = fopen("/home/pol/auth.txt", "r");
if(fp == NULL){
printf("Errore apertura file\n");
return EXIT_FAILURE;
}
while(!feof(fp)){
fgets(line, /* E QUI?? */ , fp);
tmp = strtok(line, " ");
tmp2 = strtok(NULL, "\n"); /* con fgets ultimo carattere è \n (se pwd=12 => 12\n) quindi devo tagliare prima di \n */
if((strcmp(tmp,user) == 0) && (strcmp(tmp2,pass) == 0)){
printf("USER: %s - PASS: %s\n", tmp, tmp2);
free(user);
free(pass);
return EXIT_SUCCESS;
}
else{
printf("Utente o password errati o non presenti nel DB\n");
free(user);
free(pass);
return EXIT_FAILURE;
}
}
return EXIT_SUCCESS;
}
我想知道:
- 它是正確的寫入
fgets
值sizeof(line)
與否。我的疑問是,line
包含一個指針,因此它總是4首或8個字節... line
是正確的分配呢?
是的,但沒有,沒有。你想在這裏做什麼? –
其實,「不」,「是」和「是」? ;)不,我不知道他在這裏嘗試實現什麼;) – paulsm4
我想爲用戶和通過動態分配字符。那麼我想分配到用戶+通過總和:) – polslinux