从C中的输入文件中识别字符

时间:2016-03-07 05:55:53

标签: c scanf

我有一个如下所示的输入文件:

5  
(2,3)  
(1,4)  
(1,3)  
(3,4)  
(4,5) 

第一个数字是有序对的数量。我正在尝试扫描数组x[i]中的每个x in(x,y),并将y数字扫描到y[i]。我尝试使用fscanf来获取每一行并将其放入一个数组中,然后设置x[i]=array[1]并为每个y[i]=array[3]设置i,但我认为正在进行的是{{1}每次扫描时都不等于array[0]。将'(中的x和y扫描到(x,y)x[i]=x的最简单方法是什么?每个有序对?

1 个答案:

答案 0 :(得分:4)

如果对中的数字是整数,则可以使用循环扫描它们:

int i, res, x[number], y[number];
for (i = 0; i < number; i++) {
    if (scanf(" (%d ,%d )", &x[i], &y[i]) != 2) {
        printf("invalid input\n");
        exit(1);
    }
}

格式中的初始空格将使用任何空白字符,例如前一个scanf在输入流中留下的换行符。

根据KemyLand的建议,%d之后的其他空格将忽略数字与,)字符之间的空格。在数字之前忽略空格已由%d格式完成。但是你不应该在)之后添加一个,因为它会指示scanf消耗对之后的所有空格,包括\n,这不是问题,但提示输入更多键入了非空格字符,这不是您想要的。

scanf是一个古老而笨重的函数,它可用于快速和脏的解析,但有许多怪癖和缺点,研究手册并查看许多示例。