您的位置:首页 > 其它

文件与键盘输入与输出

2013-07-22 09:54 134 查看
之前关于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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐