文件与键盘输入与输出

穿精又带淫゛_ 提交于 2020-01-25 01:45:05

之前关于getchar的使用有个误区。getchar是一句输入结束后,挨个挨个读取的。

getchar用法

int getchar(void),从标准输入中一次读取一个字符。可以从键盘读入,也可以从文件读入。

从文件读入的方法:

#include<stdio.h>

FILE *fp;

void main(){
    char c;
    fp=freopen("test.txt","r",stdin);
    while((c=getchar())!=EOF){
        putchar(c);
    }
}

注意while((c=getchar())!=0),c=getchar()两边要再加括号。判断的是c的值,c从getchar读入后的值。一开始总以为c=getchar()会返回个1什么的。

 

gets()从标准输入中一次读入一句。可以键盘读入,可以文件读入。

从文件读入方法:

#include<stdio.h>
#include<string.h>
FILE *fp;

void main(){
    char getstr[128];
    char tmpstr[128];
    char matchstr[128];
    fp=freopen("test.txt","r",stdin);
    while(gets(getstr)){
        if(strcmp(getstr,tmpstr)==0){
            if(strcmp(getstr,matchstr)!=0){
                printf("%s\n",getstr);
                strcpy(matchstr,getstr);
            }
        }
        strcpy(tmpstr,getstr);
    }
}

 

putchar也可以从文件输出

#include<stdio.h>

FILE *fp;
FILE *sp;

void main(){
    char c;
    fp=freopen("test.txt","r",stdin);
    sp=freopen("oput.txt","w",stdout);
    while((c=getchar())!=EOF){
        putchar(c);
    }
}

 

关键应该是输入输出流的重定向:

    fp=freopen("test.txt","r",stdin);
    sp=freopen("oput.txt","w",stdout);

 重定向以后用printf语句也会从文件输出。

fopen与freopen的区别在于fopen可以配合fclose使用,灵活关闭打开文件。使用freopen所以输入输出语句都是在文件中操作,使用fopen可以结合键盘输入,文件输入。

使用fopen从文件读入字符要用fgetc(),如

while((c=fgetc(fp))!=EOF){
        putchar(c);
    }

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!