fgets() pas d'attente pour l'entrée

J'ai écrit le code suivant:

int N;
scanf("%d", &N);
int i;
for (i = 0; i < N; i++) {
  char line[LINE_MAX];
  if (fgets(line, LINE_MAX, stdin) != NULL) {
    //do stuff with line here
    printf("%c - %c\n", line[0], line[1]);
  }
}

J'ai un fichier d'entrée qui a le nombre de lignes qu'il a, et alors que le nombre de lignes qui je veux processus. J'ai donc lu dans le nombre de lignes dans N. Après cela, j'utilise fgets pour obtenir la ligne pour être en mesure de le traiter.

Cependant, fgets ne semble pas attendre pour un stdin la première fois. Je reçois toujours un sortie de -, puis il attend d'entrée. Sens, la première itération de la boucle, il n'est pas d'attente pour l'entrée standard à fgets et se contente d'afficher deux vide de caractères séparés par des - que mon printf n'.

Pourquoi est-ce? Comment puis-je obtenir fgets attendre d'entrée à chaque fois? J'ai l'impression que c'est un problème thread.

InformationsquelleAutor darksky | 2012-04-14