Я пытаюсь заполнить массив из текстового файла. массив в структуры, которая:Чтение строки из текстового файла в массив символов в c
struct ISBN
{
long value;
};
struct Author
{
char authorName[60];
};
struct Book
{
char *bookTitle;
struct Author bookAuthor;
struct ISBN bookID;
};
Я попытался написать функцию, которая принимает FILLIN файла и типа-структуру книги, как это:
void fillin (FILE * file, struct Book * bk)
{
bk->bookTitle =(char*) malloc(1000);
size_t n = 0;
int c;
file=fopen("book.txt","r");
while ((c = fgetc(file)) != '\n')
{
bk->bookTitle[n++] = (char) c;
}
bk->bookTitle[n] = '\0';
fscanf(file,"%s", &bk->bookAuthor.authorName);
fscanf(file,"%lld",&bk->bookID.value);
//fscanf(file,"%s", &bk->bookTitle);
}
Файл book.txt имеет эти данные :
UNIX Network Programming
W. Richard Stevens
0131411551
проблема заключается в том, что не может сканировать массивы и я хочу, чтобы заполнить BOOKTITLE и autherName массивы из текстового файла.
'fscanf (файл "% S", bk-> bookAuthor.authorName);' не будет сканировать в 'W. Ричард Стивенс и 2) 'fgets (bk-> bookAuthor.authorName, 60, file);' излишне добавляет '\ n' к имени автора. Оба подхода, как есть, не работают, чтобы решить пост OP. Примечание: строки никогда не «еще не завершены». 'char' массивы часто не заканчиваются нулевым символом. – chux