, unsigned long .
?
#include <stdio.h>
int main(void)
{
printf("%zu\n", sizeof(unsigned long));
return 0;
}
gcc -std=c99 file.c. , unsigned long uint32_t #include <inttypes.h> :
#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>
#include <stdint.h>
int main(int argc, char **argv)
{
long offset;
FILE *io;
unsigned char found;
uint32_t loc;
if (argc != 2)
{
printf("syntax: find 0000000\n");
return 255;
}
offset = strtol(argv[1], NULL, 0) * (1+4);
if ((io = fopen("index.dat", "rb")) == NULL) {
fprintf(stderr, "Cannot open file\n");
return EXIT_FAILURE;
}
if (fseek(io, offset, SEEK_SET) == -1) {
fprintf(stderr, "Error seeking\n");
perror(NULL);
return EXIT_FAILURE;
}
if (fread(&found, 1, 1, io) != 1) {
fprintf(stderr, "Error in first fread\n");
return EXIT_FAILURE;
}
if (fread(&loc, sizeof loc, 1, io) != 1) {
fprintf(stderr, "Error in second fread\n");
return EXIT_FAILURE;
}
if (found == 1)
printf("%" PRIu32 "\n", loc);
else
printf("-1\n");
fclose(io);
return 0;
}
, " " 4 unsigned long. , 4 unsigned long .
, : , ..