标题:读取文件并输出到屏幕
只看楼主
lxk1732942
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:450
专家分:425
注 册:2018-9-4
结帖率:96.43%
已结贴  问题点数: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”和"请按任意键继续..."之间会有一段间距,这段间距是什么内容?
搜索更多相关主题的帖子: 读取 输出 FILE while getchar 
2019-01-09 14:50
lxk1732942
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:450
专家分:425
注 册:2018-9-4
得分:0 
我的代码中最后忘记关闭文件了...不过在这里并没有影响
2019-01-09 15:03
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册: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: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:450
专家分:425
注 册:2018-9-4
得分:0 
不是吧,第二行与第四行的间隔是这个换行造成的,就算是换行,那也不应该是中间有一段间隔啊,换行不是直接开始下一行了吗,实际上只是有一段间隔说明有内容并且不是一般的字符,显示不出来
2019-01-10 13:07
ZJYTY
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:92
专家分:700
注 册: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: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:450
专家分:425
注 册:2018-9-4
得分:0 
回复 5楼 ZJYTY
意思是那片空白是-1?
2019-01-11 09:50
ZJYTY
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:92
专家分:700
注 册:2018-12-20
得分:0 
对的,可以自己再做下测试。

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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-492596-1-1.html




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

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