Если вы хотите проверить возвращаемое значение fopen (), сделайте так:
if (file == NULL) return false;
, тогда, если вы хотите написать строку, то fputs () предпочтительнее, ИМХО, потому что она лучше взаимодействует сто, что вы пишете, является строкой.
Поскольку, согласно вашему последнему редактированию, вы не пишете строки ASCII, это то, что вы должны кодировать:
#include <stdio.h>
struct String
{
int size;
char data[200];
};
int main()
{
struct String s;
FILE* file = NULL;
file = fopen("filename", "wb+");
memset(&s, '\0', sizeof(s));
strcpy(s.data, "Hello, world!");
s.size = strlen(s.data);
fwrite(&s, 1, sizeof(s), file);
if (!file) return 1;
fclose(file);
}