繁体   English   中英

C fscanf以正确的格式读取

[英]C fscanf reading in the correct format

我完全陷入了C fscanf格式化程序

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

这就是我需要从文件中读取的内容。 Name:(score1, score2) 但是我没有为它构造正确的格式器:

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

我究竟做错了什么?

首先,如果您检查scanf (和族)引用,您会看到可以在格式代码中添加星号以禁止分配,因此无需传递“垃圾”变量。

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

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

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

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

暂无
暂无

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

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