Я пытаюсь проверить запись в двоичный файл в c и просто хочу понять мой вывод.Запись в двоичный файл в C, интерпретация вывода
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void writeToFile();
int main(void) {
writeToFile();
return(0);
}
void writeToFile() {
FILE * file = fopen("file.bin","w");
char * string;
if(file == NULL)
printf("Problem with file\n");
string = malloc(sizeof(char)*6);
strcpy(string,"Hello");
fwrite(&string,sizeof(string),strlen(string)+1,file);
fclose(file);
}
Я интерпретируя свои результаты с помощью команды:
od -c file.bin
который отображает восьмеричный выход. И дает мне это:
0000000 @ 022 # 001 \0 \0 \0 \0 020 020 # 001 \0 \0 \0 \0
0000020 300 016 374 ? 377 177 \0 \0 264 006 @ \0 \0 \0 \0 \0
0000040 @ \a @ \0 \0 \0 \0 \0 200 365 c 274 020 177 \0 \0
0000060
Я не уверен, как интерпретировать этот вывод, я знаю, что это в восьмеричной, но как я знаю, что моя строка «Hello» была написана правильно?
Я думал, что смогу преобразовать вывод в ascii, используя таблицу ascii, но я не уверен, что это выполнимо здесь? Есть ли простой способ проверить, правильно ли написана строка «Hello»?
Возможно, я мог бы прочитать выход обратно и как-то проверить, существует ли в нем строка «Hello»?
Любая помощь будет высоко оценена.
Вы передаете адрес 'string' для fwrite. Вы должны передать его значение. – Mick
Может быть проще отобразить вывод в шестнадцатеричном формате (я использую 'od -Ax -t x1' –
Вы пишете * указатель *' string' (не то, на что он указывает, что является строкой), и пучок из мусора, который после него. – immibis