2015-12-07 3 views
0

Я хочу сохранить int переменной correctAnswer в моей структуре, но она сохраняется как другой тип, поэтому я хочу сравнить ее с int. Как изменить следующий код так, чтобы он был сохранен как int?Сканирование целого числа с использованием fscanf и delimeter c

fscanf(file, "%[^;]", &questionArray[i].correctAnswer); 

Должно быть что-то вроде "%d[^;]" Я думаю.

Также, какой тип данных сохраняется на questionArray[i].correctAnswer?

И примерно точка с запятой, потому что «correctAnswer» находится в конце строки.

+1

'если (fscanf (файл "% D", & questionArray [я] .correctAnswer) == 1) Успех();' – chux

+2

проводка образцы строк для преобразования будут уточнять использование разделителя '';''. – chux

+1

'% [^;]' - хранить данные в переменной до тех пор, пока ';' не встретится, а тип будет 'char *'. Он не должен ничего делать с расположением «правильного ответа». – ameyCU

ответ

1

предложить:

fscanf(file, "%d;", &questionArray[i].correctAnswer); 

, как будет считывать данные в виде целого числа, а также потребляют косую запятой «;»

0

Ввод файлов гораздо проще в обработке и обнаружении проблем с использованием fgets().

Прочитайте строку с fgets(), а затем проанализируйте.

// 1: Success - save number in an `int` 
// O: Bad format 
// EOF: No more data 
int get_answer(FILE *file, int *x) { 
    char buffer[100]; 
    if (fgets(buffer, sizeof buffer, file) == NULL) return EOF; 
    if (sscanf(buffer, "%*[^;];%d", x) == 1) return 1; 
    return 0; 
} 

"%*[^;] чтение и не сохранить любой символ, кроме ; по крайней мере 1 такого характера должно существовать, чтобы перейти к следующему шагу.
";" чтение и не спасает ';'
"%d" Чтения и сохранить int

Смежные вопросы