Witam.
Napisałem programik do czyszczenia dysku algorytmem guttmana.
Móżecie sprawdzić, czy jest napisany poprawnie?
#include <cstdio>
#include <ctime>
#include <cstdlib>
int gut[] = {
0x555555,
0xAAAAAA,
0x924924,
0x492492,
0x000000,
0x111111,
0x222222,
0x333333,
0x444444,
0x555555,
0x666666,
0x777777,
0x888888,
0x999999,
0xAAAAAA,
0xBBBBBB,
0xCCCCCC,
0xDDDDDD,
0xEEEEEE,
0xFFFFFF,
0x924924,
0x492492,
0x249249,
0x6DB6DB,
0xB6DB6D,
0xDB6DB6
};
int main()
{
const char *sciezka = "/dev/sda";
FILE *plik = fopen(sciezka, "w");
if (plik == NULL)
{
printf("error");
return 1;
}
srand( (int)time(NULL) );
for (int i = 0; i < 4; i++)
{
printf("Pass %d/4\n", i+1);
while (ferror(plik) == 0)
fprintf(plik, "%d", rand());
perror("Warning: ");
if (fseek(plik, 0, SEEK_SET))
{
perror("Nie można ustawić wskaźnika na początek pliku: ");
return 1;
}
}
for (int i = 0; i < 27; i++)
{
printf("Pass %d/27\n", i+1);
while (ferror(plik) == 0)
{
fputc((char)gut[i], plik);
fflush(plik);
}
perror("Warning: ");
if (fseek(plik, 0, SEEK_SET))
{
perror("Nie można ustawić wskaźnika na początek pliku: ");
return 1;
}
}
for (int i = 0; i < 4; i++)
{
printf("Pass %d/4\n", i+1);
while (ferror(plik) == 0)
fprintf(plik, "%d", rand());
perror("Warning: ");
if (fseek(plik, 0, SEEK_SET))
{
perror("Nie można ustawić wskaźnika na początek pliku: ");
return 1;
}
}
fclose(plik);
return 0;
}