Как предлагается в комментариях, вы можете сделать
fscanf(arqProdTemp, "%[^|]|%d|%s", insumo, &qtdInsumos, unidade);
Обратите внимание, что если qtdInsumos
является целочисленной переменной, вам нужно передать ее адрес в fscanf()
с помощью &qtdInsumos
. Не его значение.
insumo
и unidade
- это символьные массивы, используемые для хранения строк. Убедитесь, что массивы достаточно велики для хранения строк и использования спецификаторов ширины, таких как
fscanf(arqProdTemp, "%14[^|]|%d|14%s", insumo, &qtdInsumos, unidade);
где 15 предполагается размером обоих массивов. Измените его в соответствии со своими потребностями.
Кроме того, проверьте возвращаемое значение fscanf()
, чтобы увидеть, все ли прошло хорошо. fscanf()
возвращает количество успешных назначений, которое в этом случае должно быть 3.
if( fscanf(arqProdTemp, "%[^|]|%d|%s", insumo, &qtdInsumos, unidade) != 3 )
{
//Something went wrong
}