繁体   English   中英

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

[英]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() 不是它的价值。

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
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM