| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
跟大牛学C++学算法数据结构
共有 323 人关注过本帖
标题:读取文件并输出到屏幕
只看楼主 加入收藏
lxk1732942
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:386
专家分:358
注 册:2018-9-4
结帖率:100%
  已结贴   问题点数:20  回复次数:6   
读取文件并输出到屏幕
程序代码:
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    FILE *fp;
    char ch, filename[10];

    scanf("%s", filename);
    if ((fp = fopen(filename, "w")) == NULL)
    {
        printf("cannot open file\n");
        exit(0);
    }

    while (getchar() != '\n'); //清空缓冲区
    ch = getchar();
    while (ch != '#')
    {
        fputc(ch, fp);
        ch = getchar();
    }
    putchar('\n');
    fclose(fp);

    if ((fp = fopen(filename, "r")) == NULL)
    {
        printf("cannot open file\n");
        exit(0);
    }
    while (!feof(fp))
    {
        ch = fgetc(fp);
        putchar(ch);
    }

    system("pause");
    return 0;
}




我的问题:
为什么最后输出时“rongyao”和"请按任意键继续..."之间会有一段间距,这段间距是什么内容?
附件: 您没有浏览附件的权限,请 登录注册
2019-01-09 14:50
lxk1732942
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:386
专家分:358
注 册:2018-9-4
  得分:0 
我的代码中最后忘记关闭文件了...不过在这里并没有影响
2019-01-09 15:03
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:775
专家分:778
注 册:2017-1-4
  得分:5 
回复 2楼 lxk1732942
程序代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *fp;
    char ch, filename[10];

    scanf("%s", filename);
    if ((fp = fopen(filename, "w")) == NULL)
    {
        printf("cannot open file\n");
        exit(0);
    }

    while (getchar() != '\n'); //清空缓冲区
    ch = getchar();
    while (ch != '#')
    {
        fputc(ch, fp);
        ch = getchar();
    }
    //putchar('\n');//是这个输出的换行符
    fclose(fp);

    if ((fp = fopen(filename, "r")) == NULL)
    {
        printf("cannot open file\n");
        exit(0);
    }
    while (!feof(fp))
    {
        ch = fgetc(fp);
        putchar(ch);
    }
    return 0;
}
2019-01-09 20:53
lxk1732942
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:386
专家分:358
注 册:2018-9-4
  得分:0 
不是吧,第二行与第四行的间隔是这个换行造成的,就算是换行,那也不应该是中间有一段间隔啊,换行不是直接开始下一行了吗,实际上只是有一段间隔说明有内容并且不是一般的字符,显示不出来
2019-01-10 13:07
ZJYTY
Rank: 4
等 级:业余侠客
威 望:1
帖 子:42
专家分:295
注 册:2018-12-20
  得分:15 
程序代码:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    FILE *fp;
    char ch, filename[10];

    scanf("%s", filename);
    if ((fp = fopen(filename, "w")) == NULL)
    {
        printf("cannot open file\n");
        exit(0);
    }

    while (getchar() != '\n'); //清空缓冲区
    ch = getchar();
    while (ch != '#')
    {
        fputc(ch, fp);
        ch = getchar();
    }
    fclose(fp);
    putchar('\n');

    if ((fp = fopen(filename, "r")) == NULL)
    {
        printf("cannot open file\n");
        exit(0);
    }
    while (!feof(fp))                //feof是在读取完所有字符后再读一次才返回1
    {
        ch = fgetc(fp);
        if (ch == EOF)                //可通过EOF判断是否读到文件尾,值为-1
            break;            
        putchar(ch);
    }
    fclose(fp);
    system("pause");
    return 0;
}

附件: 您没有浏览附件的权限,请 登录注册

-------------------------------若有不当之处,敬请谅解-------------------------------
2019-01-10 14:17
lxk1732942
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:386
专家分:358
注 册:2018-9-4
  得分:0 
回复 5楼 ZJYTY
意思是那片空白是-1?
2019-01-11 09:50
ZJYTY
Rank: 4
等 级:业余侠客
威 望:1
帖 子:42
专家分:295
注 册:2018-12-20
  得分:0 
对的,可以自己再做下测试。

-------------------------------若有不当之处,敬请谅解-------------------------------
2019-01-11 13:26







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.986096 second(s), 9 queries.
Copyright©2004-2019, BCCN.NET, All Rights Reserved