У меня есть текстовый файл, который выглядит следующим образом:Использование fgets && sscanf для чтения из массива
C M 2/1/2015 18280 "2107070770"
C U 2/1/2015 18300 "2107070770"
текстовый файл имеет несколько строк. Я пытаюсь сохранить каждую строку в массив строк, а затем сохранить каждое значение в переменные, с которыми хочу работать. (я открываю FOPEN Удачно файл)
хранить каждую строку следующим образом:
char line[50];
char *lines[40];
char *eof ;
int i ;
while((eof = fgets(line, 50, in)) != NULL)
{
lines[i] = strdup(eof);
i++;
}
Затем я пытаюсь сохранить каждое значение в переменные со следующим образом:
for(j = 0; j <= 39 ; j++)
{
sscanf(lines[j], "%c %c %d/%d/%d %d %s", &(operation), &(destination), &(day) , &(month) , &(year) , &(name)) ;
/*printf("%s\n", lines[j]);*/
}
Итак, я могу работать на каждой линии отдельно. Мой код хранит каждую строку в массиве успешно, но после , добавляя функцию sscanf, она перестает работать без вывода. Что я сделал не так?
'while ((eof = fgets (строка, 50, in))! = NULL)' -> 'while (fgets (line, 50, in))' и с последним аргументом 'scanf' вам не нужно передавать адрес, потому что' name' уже (или распадается) указатель. –
'i' здесь не инициализируется. Автоматические переменные по умолчанию не инициализируются. – sjsam
Семь спецификаторов преобразования. Шесть переменных.Неопределенное поведение. Вы умираете. ;-) – DevSolar