У меня проблемы с небольшим фрагментом кода, я пытаюсь прочитать бинарный файл, если у меня есть этот код в отдельном файле, создайте и запустите его, он отлично читает файл, но если я поставлюодин и тот же код в большем проекте в функции, он всегда читает данные неправильно (будучи одним и тем же файлом для двух тестов).
Это код в отдельном проекте:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(int argc, char* argv[]) {
char* filename = (char*)"file.binary";
FILE* file = fopen(filename, "rb");
if (!file) {
printf("Unable to open %s for reading. \n", filename);
fclose(file);
free(filename);
exit(1);
}
fseek (file , 0 , SEEK_END);
long size = ftell (file);
rewind (file);
printf("Number of bytes in the file is %ld \n", size);
int version = 0;
char* string = (char*)malloc(sizeof(char) * 3);
fread(string, sizeof(char), 3, file);
if (strcmp(string, (char*)"str")) {
printf("%s is not properly formatted. \n", filename);
fclose(file);
free(filename);
exit(1);
}
fread(&version, sizeof(int), 1, file);
printf("%s version %d\n", string, version);
free(filename);
fclose(file);
}
Я не публикую код в более крупном проекте, потому что он точно такой же (копия вставлена), за исключением того, что он находится внутриФункция класса вместо непосредственно на главной функции.Это довольно простой кусок кода, но по какой-то странной причине он терпит неудачу, и я не могу разобраться с этим.В обоих случаях правильно читается размер файла, отдельный проект правильно считывает данные «строка» и «версия» и правильно их печатает, однако в более крупном проекте он всегда попадает во второе условие, поскольку строка нечто, как ожидается, будет.
Я не думаю, что это связано, но более крупный проект встраивается в статическую библиотеку, которая позднее используется для связи с основной программой.
У кого-нибудь есть подсказка, могу ли я пропустить?Благодаря.