我正在尝试阅读
形式的文件A number,number
A number,number
[space] B number,number
etc
我想只读取以空格开头的行(即上例中的最后一行)。我写了这个循环:
while ((g = fscanf(fp," %c %x,%d\n",&a,&b,&c) != EOF){
printf("%c %x,%d\n",a,b,c);
}
但是尽管我把它放在字符串的开头,它仍然会输出所有的行。我知道我可以在循环中过滤它们,但是可以在fscanf中指定它吗?
答案 0 :(得分:3)
OP:可以在fscanf
中指定它吗?
答:是的,但它的丑陋。使用最好的工具。
使用fgets()
,然后使用sscanf()
进行扫描。
char buf[100];
char a;
unsigned b;
int c;
while (fgets(buf, sizeof buf, fp) != NULL) {
// Thank-you @Chris Dodd
if ((buf[0] == ' ') && (sscanf(buf, " %c%x,%d", &a,&b,&c) == 3)) {
printf("%c %x,%d\n",a,b,c);
}
}
答案 1 :(得分:0)
实现目标的一种方法是使用 getc 并检查空间,如果找到空格,请调用 ungetc < / strong>并使用 fgets 读取该行,否则请阅读该行并跳过它