Feof (stdin) - как указать конец ввода в Windows? - PullRequest
2 голосов
/ 26 октября 2010
    int x,y,m;
for(;;){
    m=scanf("%d %d",&x,&y);
    if (m!=2 || m==EOF){
        break;
    }
    else{
        printf("/%d/%d/\n",x,y);
    }
}
if (feof ( stdin )){
  printf("End of input\n");
}else if(m!=2){
  printf("There was an error\n");
}

В linux ctrl + D указывает на конец ввода, а для windows ctrl + z должен работать, но это не работает.Есть идеи?

Ответы [ 2 ]

5 голосов
/ 26 октября 2010

Попробуйте нажать Enter после Ctrl + z

Если все равно не повезло, попробуйте версию C ++:

#include <iostream>

int x, y;
while ( std::cin >> x >> y )
   std::cout << '/' << x << '/' << y << "/\n";
if ( std::cin.eof() )
   std::cout << "End of input\n";
else
   std::cout << "There was an error\n";

и посмотрите, будет ли она лучше?

0 голосов
/ 23 декабря 2012
#include<stdio.h>
#include<conio.h>
void main (void)
{
int x,y,m;
for(x=0;x>=0;x++){
    m=scanf("%d %d",&x,&y);
    if (m!=2 || m==EOF){
    break;
    }
    else printf("/%d/%d/\n",x,y);
}
if (feof ( stdin )){
  printf("End of input\n");
}
else if(m!=2){
  printf("There was an error\n");
}
getch();
}
...