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

Categories

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

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

1 Answer

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.)


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...