| Цитата(Чупакабро @ 6.10.2013, 12:09) | Цитата(Белоснежка @ 6.10.2013, 11:40 ) | | Кстати, числа без проблем считываются и они даже читабельны.. |
Код в студию |
Запись:
| Код | fseek(structure_file,0L,SEEK_END); if(fwrite(&target_name,sizeof(target_name),1,structure_file) != 1) //ТУТ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! { fclose(store_file); fclose(structure_file); fclose(source_file); free(archive_store); free(archive_structure); printf("Das Schreiben ins VFS war nicht möglich(target_name)\n"); return 66; } char delimiter = ','; if(fwrite(&delimiter,sizeof(char),1,structure_file) != 1) //in die structure-Datei Anzahl der freien Blocks schreiben { fclose(store_file); fclose(structure_file); fclose(source_file); free(archive_store); free(archive_structure); printf("Das Schreiben ins VFS war nicht möglich(delimiter)\n"); return 66; } if(fwrite(&source_size,sizeof(uintmax_t),1,structure_file) != 1) //in die structure-Datei Anzahl der freien Blocks schreiben { fclose(store_file); fclose(structure_file); fclose(source_file); free(archive_store); free(archive_structure); printf("Das Schreiben ins VFS war nicht möglich(source_size)\n"); return 66; } if(fwrite(&blockanzahl,sizeof(uintmax_t),1,structure_file) != 1) //in die structure-Datei Anzahl der freien Blocks schreiben { fclose(store_file); fclose(structure_file); fclose(source_file); free(archive_store); free(archive_structure); printf("Das Schreiben ins VFS war nicht möglich(source_size)\n"); return 66; } for(uintmax_t i=0;i<blockanzahl;i++) { if(fwrite(&blocknumber_array[i],sizeof(uintmax_t),1,structure_file) != 1) //in die structure-Datei Anzahl der freien Blocks schreiben { fclose(store_file); fclose(structure_file); fclose(source_file); free(archive_store); free(archive_structure); printf("Das Schreiben ins VFS war nicht möglich(delimiter)\n"); return 66; } } free(archive_store); free(archive_structure); fclose(store_file); fclose(structure_file); fclose(source_file); printf("Die Datei wurde erfolgreich zum VFS hinzugefügt\n"); return 0;
|
Чтение:
| Код | uintmax_t aktuelle_position; aktuelle_position = ftell(structure_file); uintmax_t structure_file_laenge; fseek(structure_file,0L,SEEK_END); structure_file_laenge = ftell(structure_file); fseek(structure_file,aktuelle_position,SEEK_SET); uintmax_t zwischen_akt_end; zwischen_akt_end = (structure_file_laenge-aktuelle_position); printf("%ju,%ju,%ju\n",structure_file_laenge,aktuelle_position,zwischen_akt_end); if(zwischen_akt_end != 0) { char *buffer = NULL; if((buffer = (char *) malloc(sizeof(char)*zwischen_akt_end)) != NULL) { memset(buffer,0,zwischen_akt_end); } else { fclose(store_file); fclose(structure_file); fclose(source_file); free(buffer); free(archive_store); free(archive_structure); printf("Das Hinzufügen einer Datei hat nicht geklappt\n"); return 66; } if((fread(buffer,sizeof(char)*zwischen_akt_end,1,structure_file)) != 1)//-------ТУТ!!!!!!!!!!!!!!!!!!!!!!!!! { fclose(store_file); fclose(structure_file); fclose(source_file); free(buffer); free(archive_store); free(archive_structure); printf("Das Lesen aus der VFS war nicht möglich(dateiinfo)\n"); return 66; } printf("%s\n",buffer); if(strstr(buffer,target_name) != NULL) { fclose(store_file); fclose(structure_file); fclose(source_file); free(buffer); free(archive_store); free(archive_structure); printf("Eine Datei mit diesem Dateinamen existiert bereits\n"); return 11; } free(buffer); }
|
Извиняюсь, что не всё.. Код оооочень длинный.. Какие отрезки ещё нужны? |