C语言程序的文件输入输出为什么会出现句柄无效?
C语言程序的文件输入输出为什么会出现句柄无效?#include<stdio.h>#include<stdlib.h>intmain(){freopen("shiyan.i...
C语言程序的文件输入输出为什么会出现句柄无效?
#include<stdio.h>
#include<stdlib.h>
int main()
{
freopen("shiyan.in","r",stdin);
freopen("shiyan.out","w",stdout);
int a,b,c;
scanf("%d%d",&a,&b);
c=a+b;
printf("%d",c);
fclose(stdin);
fclose(stdout);
system("pause");
return 0;
} 展开
#include<stdio.h>
#include<stdlib.h>
int main()
{
freopen("shiyan.in","r",stdin);
freopen("shiyan.out","w",stdout);
int a,b,c;
scanf("%d%d",&a,&b);
c=a+b;
printf("%d",c);
fclose(stdin);
fclose(stdout);
system("pause");
return 0;
} 展开
3个回答
展开全部
一般情况下,scanf从标准输入流中取数据,printf将数据写入标准输出流.
使用freopen后,
scanf不会再阻塞等待键盘输入,而是去"shiyan.in"这个文件中取数据,若这个文件不存在,或其中无数据,则a,b数据保持不变.
printf也不会将结果显示在屏幕,而是写入文件shiyan.out
#include<stdio.h>
int main()
{
int a,b;
a=1;
b=2;
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
scanf("%d%d",&a,&b);
printf("a=%d,\tb=%d\n",a,b);
printf("a+b=%d\n",a+b);
printf("freopen stdout test\n");
fclose(stdout);
fclose(stdin);
}
测试结果(Linux , gcc编译):
(1)若in.txt不存在,或无数据,
out.txt如图
(2)若in.txt有数据,则结果如图
展开全部
#include<stdio.h>
#include<stdlib.h>
int main()
{
stdin = freopen("shiyan.in","r",stdin);
stdout = freopen("shiyan.out","w",stdout);
int a,b,c;
scanf("%d%d",&a,&b);
c=a+b;
printf("%d",c);
fclose(stdin);
fclose(stdout);
system("pause");
return 0;
}
试试这样
freopen印象中是需要返回值的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询