[英]How to use fscanf() in C to recognize patterns that are recognized as strings?
我想使用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
是一个整数变量,则需要使用&qtdInsumos
将其地址传递给fscanf()
。 不是它的价值。
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
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.