ВАЖНОЕ РЕДАКТИРОВАНИЕ:
Извините всех, я сделал большую ошибку в структуре.
название символа; должен быть вне структуры, записан в файл после структуры.
Таким образом, вы читаете структуру, узнаете размер имени, затем читаете в строке. Также объясняет, почему не нужен нулевой терминатор.
Тем не менее, я чувствую, где-то, мой фактический вопрос был дан ответ. Если кто-то захочет отредактировать свои ответы, чтобы я мог выбрать наиболее подходящий, я был бы признателен за это.
Опять же, вопрос, который я задавал: «Если вы читаете в структуре, читаете ли вы также данные, которые она содержит, или вам нужен другой доступ к ней».
Извините за путаницу
Для выполнения задания мне была поручена программа, которая записывает и считывает структуры на диск (используя fread и fwrite).
У меня проблемы с пониманием концепции.
Допустим, у нас есть такая структура:
typedef struct {
short nameLength;
char* name;
}attendenceList;
attendenceList names;
теперь предположим, что мы даем ему эти данные:
names.name = "John Doe\0";
names.nameLength = strlen(names.name); /*potentially -1?*/
и затем мы используем fwrite ... учитывая указатель файла fp.
fwrite(&names,sizeof(names),1,fp);
Теперь мы закрываем файл и позже открываем его для чтения в структуре.
вопрос в следующем: когда мы читаем в структуре, мы также читаем в переменных, которые она хранит?
Можем ли мы теперь сделать что-то вроде:
if(names.nameLength < 10)
{
...
}
Или мы должны придумать что-то большее, чем просто структуру, или назначить их как-нибудь?
Предполагая, что фред:
fread(&names,sizeof(names),1,fp);
Также при условии, что мы определили структуру в нашей текущей функции, как указано выше.
Спасибо за помощь!