You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请详细解析C语言自定义GetLine函数的功能及作用

自定义GetLine函数功能解析

一、相关代码

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,分别存入inull和nbmat;
  • 调用GetLine函数(功能待明确);
  • 进入循环,循环次数为0到11;
  • 循环内的fscanf读取文件中的整数20012和1,分别存入tcode和n;

五、GetLine函数功能详细解析

这个函数的核心作用是跳过当前行剩余的所有字符,将文件指针移动到下一行的起始位置,具体逻辑如下:

结合调用场景和文件内容拆解:

  1. 首次fscanf读完第一行的1和12后,文件指针停留在12后的空格处,此时第一行还剩Description of $CODE和换行符未读取;
  2. 调用GetLine后:
    • 先执行一次fgetc(fp),读取12后的空格字符;
    • 进入do-while循环,逐个读取后续字符(包括Description、空格、of、空格、$CODE),直到读取到换行符(ASCII码10)或者文件末尾;
  3. 执行完毕后,文件指针刚好定位到第二行开头(20012的第一个字符位置),确保后续循环里的fscanf能精准读取下一行的整数,不会被当前行剩余的文本干扰。

内容的提问来源于stack exchange,提问作者TINGHAIK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 07:27:51