Вопрос по scanf, fread, c – Чтение файлов, разделенных табуляцией в c

2

Я действительно новичок в C, и чтение файлов сводит меня с ума ... Я хочу прочитать файл, включающий имя, место рождения и номер телефона и т. Д. Все разделены вкладкой

Формат может быть таким:

Bob Jason   Los Angeles    33333333
Alice Wong  Washington DC  111-333-222

Поэтому я создаю структуру для записи.

typedef struct Person{
    char name[20];
    char address[30];
    char phone[20];
} Person;

Я пробовал много способов прочитать этот файл в структуру, но это не удалось. Я устал от фреда

read_file = fopen("read.txt", "r");
Person temp;
fread(&temp, sizeof(Person), 100, read_file);
printf("%s %s %s \n", temp.name, temp.address, temp.phone);

Но строка char не записывается в temp, разделенный табуляцией, она читает весь файл в temp.name и получает странный вывод.

Затем я попытался fscanf и sscanf, те, которые не работают для разделения вкладки

fscanf(read_file, "%s %s %s", temp.name, temp.address, temp.phone);

Или же

fscanf(read_file, "%s\t%s\t%s", temp.name, temp.address, temp.phone);

Это разделяет строку пробелом, поэтому я получаю Боба и Джейсона по отдельности, тогда как на самом деле мне нужно получить «Боба Джейсона» как одну строку символов. И я сделал этот формат по вкладке, когда я создал текстовый файл.

То же самое для sscanf, я пробовал разные способы много раз ...

Пожалуйста помоги...

Попробуйте использовать функцию токенизации, такую ​​какstrtok() или жеstrbprk() Iharob Al Asimi
пытатьсяfscanf(read_file, " %19[^\t]\t%29[^\t]\t%19s", temp.name, temp.address, temp.phone); BLUEPIXY
И проверьте возвращаемое значениеscanf(): он сообщает вам, сколько полей ввода были успешно сопоставлены, чтобы вы могли распознать (некоторые) ошибки ввода. John Bollinger

Ваш Ответ

0   ответов

Похожие вопросы