Я использую fscanf для чтения некоторых значений из файла CSV, и я хочу, чтобы данные, считанные в значениях, не были слишком большими и вызывают переполнение буфера.Предотвращение переполнения буфера при использовании fscanf
Мой файл CSV имеет формат INT, строка, строка и мой код, чтобы прочитать ниже (я буду фиксировать состояние позже):
while(fscanf(f, "%d,%[^,],%[^,]", &inArray[i].ID, inArray[i].label, inArray[i].brand)/*insert while condition here*/
При использовании зсапЕ я бы указать длину, как так предотвратить переполнение: scanf("%20f", example);
Но если попробовать то же самое с выше: while(fscanf(f, "%d,%20[^,],%10[^,]", &inArray[i].ID, inArray[i].label, inArray[i].brand)/*insert while condition here*/
я получаю аварии, когда код выполняется.
Вы пробовали отладку? Это сбой на первой итерации вашего цикла? Как вы инициализируете 'i'? – Hulk
Если вы хотите изучить способ чтения форматированного ввода C++, вы, вероятно, захотите посмотреть [cppreference on istream operator >>] (http://en.cppreference.com/w/cpp/io/basic_istream/operator_gtgt) – Hulk