我有一个如下所示的输入文件:
5
(2,3)
(1,4)
(1,3)
(3,4)
(4,5)
第一个数字是有序对的数量。我正在尝试扫描数组 x[i]
中 (x,y) 中的每个 x,并将 y 数字扫描到 y[i]
中。我尝试使用 fscanf 获取每一行并将其放入数组中,然后设置 x[i]=array[1]
并设置 y[i]=array[3]
为每个 i
,但我认为 array[0]
每次都不等于 '(
'扫描进来。将 (x,y)
中的 x 和 y 扫描到 x[i]=x
和 y[i 中的最简单方法是什么? ]=y
对于每个有序对?
最佳答案
如果对中的数字是整数,你可以用循环扫描它们:
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
是一个古老而笨拙的函数,它可以用于快速和肮脏的解析,但有很多怪癖和缺点,学习手册并看很多例子。
关于c - 从 C 中的输入文件中识别字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35837071/