我可以同时使用scanf和getchar来读取文件吗?

问题描述 投票:0回答:1

我正在尝试读取文本文件。文件中有三个部分。第一行始终会初始化一块土地的大小,接下来的几行根据土地的“&”应用特性,然后最后几行描述了整个土地的运动。

示例输入:

4x4
(0,0)
(3,3)
&
(0,0)>(0,1)>
(0,2)>(0,3)

到目前为止,我已经根据需要存储了4x4,但是在此之后,我该如何:

  1. 从第2行继续处理不同的行
  2. 在'&'处结束该过程,并继续不同地处理最后几行

我的无效代码:

/* process first line */
while (c != "\n") {
    scanf("%dx%d%c", &row, &col, &c);
    printf("The land is %d high and %d wide.%c", row, col, c);
}

/* process until '&' is found */
while (c = getchar() != '&') {
    printf("c=%c\n", c);
}

/* process rest of file */
while (c = getchar() != EOF) {
    /* do something else */
}
c scanf text-files stdin getchar
1个回答
0
投票

您有几个问题。

首先,字符常量用单引号表示,如下所示:

while (c != '\n')

第二个,而不是在格式字符串中使用x,您可以使用%*c吃掉所有字符,如下所示:

scanf("%d%*c%d%c", &row, &col, &c);

您还应该在此处添加额外的括号以正确检查不平等,如下所示:

while ((c = getchar()) != '&')

这里相同:

while ((c = getchar()) != EOF)
© www.soinside.com 2019 - 2024. All rights reserved.