沉浸020903 2022-03-01 11:31 采纳率: 78.9%
浏览 33
已结题

C语言,ege图形库,这段代码,有时候最后一行会打印两遍,有时候不会,这是什么原因?有没有避免的方法?

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
#include <graphics.h>
#include <stdio.h>

int main()
{
    initgraph(800, 640, INIT_RENDERMANUAL);
    setbkcolor(WHITE);    
    
    //打开文件
    FILE* fp = fopen("F:\\c语言课设\\bookslist.txt","r");
    if (fp == NULL) {
        xyprintf(0, 0, "打开文件失败");
        getch();
        return -1;
    }

    setcolor(BLACK);

    int titleHeight = 40;
    setfont(40, 0, "楷体");
    xyprintf((800 - textwidth("书库")) / 2, 0, "书库");

    int fontHeight = 20;
    setfont(fontHeight, 0, "楷体");
    int x = 40,y = titleHeight + 20;

    char buff[1024];
    
    while (!feof(fp)) {
        fgets(buff, 1024, fp);
        xyprintf(x, y, buff);
        y += fontHeight;
        if (y + fontHeight > 600) {
            y = titleHeight + 20;
            if ((x += 400) > 800)
                break;
        }
    }

    fclose(fp);
    
    getch();

    closegraph();

    return 0;
}

运行结果及报错内容

这段代码,有时候最后一行会打印两遍,有时候不会,这是什么原因?有没有避免的方法?

我的解答思路和尝试过的方法
我想要达到的结果

最后一行代码只输出一遍

展开全部

  • 写回答

2条回答 默认 最新

  • CSDN专家-link 2022-03-01 11:39
    关注

    char * p = fgets(buff, 1024, fp);
    if(p != NULL)
    xyprintf(x, y, buff);
    这样试试

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    沉浸020903 2022-03-01 11:42

    强,我想了一个下午都没解决

    回复
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月2日
  • 已采纳回答 3月1日
  • 创建了问题 3月1日

悬赏问题

  • ¥15 fluentmeshing
  • ¥15 手机/平板的浏览器里如何实现类似荧光笔的效果
  • ¥15 盘古气象大模型调用(python)
  • ¥15 传人记程序做的plc 485从机程序该如何写
  • ¥15 已知手指抓握过程中掌指关节、手指各关节和指尖每一帧的坐标,用贝塞尔曲线可以拟合手指抓握的运动轨迹吗?
  • ¥50 libwebsockets 如何添加其他socket事件回调
  • ¥50 实现画布拖拽算子排布,通过flink实现算子编排计算,请提供思路
  • ¥15 esium自定义材质拉伸问题
  • ¥15 cmake+mingw使用<mysqlx/xdevapi.h>报错
  • ¥15 eNSP中防火墙的使用
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部