Я пытаюсь получить указанную ниже функцию для помещения трех вещей в файл: first, last и ssn.Первый - 30 символов, последний - 30 символов, а ssn - 9 символов.
В файле я хочу, чтобы я ввел следующую информацию: first: john last: smith ssn: 123456789
это то, что должно быть загружено в файл (все в одну строку):
Джон \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0\ 0 \ 0 \ 0 \ 0 \ 0smith \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0\ 0 \ 0 \ 0 \ 0 \ 0123456789
Тем не менее, все, что загружается, обычно это Джон (Junk) Смит (Junk) 123456789.
Как сделать так, чтобы, когда я пишуэти 3 вещи в файле, они также имеют нулевые символы в каждом неиспользуемом пространстве?
void addStudents(struct student createStudent) {
struct student *object = malloc( sizeof( struct student ) );
memcpy(object->first, createStudent.first, 30);
memcpy(object->last, createStudent.last, 30);
memcpy(object->ssn, createStudent.ssn, 9);
FILE *fp;
fp = fopen("students.db", "a");
fseek( fp, numStudents * sizeof( struct student ), SEEK_SET );
fwrite( object, sizeof( struct student ), 1, fp );
}
Это определение struct student:
struct student {
char first[30];
char last[30];
char ssn[9];
};
РЕДАКТИРОВАТЬ: Я хочунулевые символы в файле.Например, чтобы открыть файл и прочитать его в точности как "john \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0smith \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0123456789 ", включая нулевые символы.Нет ли способа сделать это?Я хотел бы иметь возможность получить доступ к файлу и эффективно сказать программе «вернуться» на 30 символов от начала ssn к началу фамилии.
Strcpy и strncpy исправляютпроблема с появлением спама, но они не включают символ '\ 0' в файл.