gpt4 book ai didi

C fscanf 以正确的格式读取

转载 作者:行者123 更新时间:2023-11-30 17:34:17 32 4
gpt4 key购买 nike

我完全被 C 中的 fscanf 格式化程序困住了

Alice:(44;69) Bob:(74;68) John:(57;98)

这是我需要从文件中读取的内容。 名称:(分数1,分数2)。但我未能为其构建正确的格式化程序:

while(fscanf(f, "%[a-zA-Z]%[;(]%d %d", &buff, &garbage, &s1, &s2)!= EOF){          

我做错了什么?

最佳答案

首先,如果您检查例如this scanf (and family) reference您可以看到,您可以在格式代码中添加星号来抑制赋值,因此无需传递“垃圾”变量。

其次,对于您的问题,数字用分号分隔,但格式中有一个空格对应于空格。

事实上,由于 scanf 内置了模式匹配功能,您应该能够将格式规范简化为例如

fscanf(f, " %[^:]:(%d;%d)", buff, &s1, &s2)

"%[^:]" 格式将所有内容作为字符串读取,直到看到冒号。然后,格式的其余部分匹配冒号、左括号、十进制数、分号、另一个十进制数和右括号。我还在格式中添加了一个前导空格,以跳过前导空格(如果有)。

关于C fscanf 以正确的格式读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23423822/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com