如何在 C 中使用 fscanf() 来识别被识别为字符串的模式?



我想使用 fscanf 来识别以下模式:

Product|10|Meter

一种产品,其数量和计量。

fscanf()用作:

fscanf(file, "%s|%d|%s");

我遇到的问题是字符串正在拾取所有内容,而其他变量没有收到任何值。

这是我的代码:

while ((fscanf(arqProdTemp, "%s|%d|%s", insumo, qtdInsumos, unidade)) != EOF) {
printf("%s - %d %s", insumo, qtdInsumos, unidade);
}

当我使用printf()函数时,insumo的结果是完全字符串!

正如评论中所建议的,你可以这样做

fscanf(arqProdTemp, "%[^|]|%d|%s", insumo, &qtdInsumos, unidade);

请注意,如果qtdInsumos是一个整数变量,则需要将其地址传递给带有&qtdInsumosfscanf()。不是它的价值。

insumounidade是用于存储字符串的字符数组。确保数组足够大以存储字符串并使用宽度说明符,例如

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
}

最新更新