Это мой код:
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
расположен правильно?