void GetLine(FILE *fp)
{
char one_char;
one_char = fgetc(fp);
do
{
one_char = fgetc(fp);
} while (!feof(fp) && one_char != 10);
}
谁能详细解释一下这段代码是做什么的?
FILE *fp
...
fscanf(fp, "%d %d", &inull, &nbmat);
GetLine(fp);
for (i = 0; i < nbmat; i++)
{
fscanf(fp, "%d %d", &tcode, &n);
...
文件如下:
1 12 Description of $CODE
20012 1 Compressibility of fluid 0
0.0
...
我知道步骤:
- 第一个fscanf读取文件号1 12到infull和nbmat;
- GetLine跳转到下一行?
- for loop: i=0—>11;
- 第二fscanf读取文件编号20012 1到tcode和n ??…
我想知道GetLine
是做什么的。
我想知道GetLine做什么;
假设一切正常,它将从当前位置跳到下一行的开头,一个字符一个字符地向前读取,直到到达ascii值10,也就是。"linefeed".
正如William Pursell评论的那样,它不是很健壮:
如果读取的第一个字符是换行符,它将丢弃它和下一个字符。如果有一个读错误,它可能会无限循环。从样例输入来看,它似乎打算使用输入中的注释。-
它读入程序的行被丢弃,而不是保存在任何地方。