Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
587 views
in Technique[技术] by (71.8m points)

c++ - Taking input from stdin after freopen()

Hi I want to how can we take input from stdin again after I invoke:

freopen("Smefile.txt","r",stdin);

Precisely I want my first in first of my program should take input from a designated file the next part would take from the stdin.

Like:

 int a,b;
 freopen("Smefile.txt","r",stdin);
 scanf("%d",&a);

 {
   //some block here such that the next cin/scanf takes b from standard input
 }
 cin>> b;
 cout <<a<<" "<<b;

Any ideas?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

You can't. Use

FILE *input = fopen("Smefile.txt","r");

// read stuff from file

fclose(input);
input = stdin;

instead.

This won't help when you're mixing C++ and C-style I/O on the same stream, which I wouldn't recommend anyway.

(If you happen to be on Linux, you can reopen /dev/stdin instead. On Linux/Unix, you can also use Jerry Coffin's dup2 trick, but that's even hairier.)


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

2.1m questions

2.1m answers

60 comments

57.0k users

...