Мой код должен прочитать строку от пользователя, если строка начинается с " output ", то выводит " Line, выводится " и ждет, пока пользователь введите другую строку.
Если строка начинается с " input ", она печатает " Line, является входной " и заканчивается.
Мой код отлично работает на ПК Intel, однако на Debian SPARC кажется, что scanf не ждет ввода после первого раза и просто читает в пустую строку или что-то бесконечно.
Где я здесь не так?
#include <stdio.h>
#include <string.h>
int main()
{
char buf[9000];
char key[5];
char *p=buf;
int readMore=1;
while(readMore)
{
//read in one line from stdin into buffer
scanf("%[^\n]",buf);
fflush(stdin);
sscanf(p, "%s",key); //get key from buffer
printf("Key:%s\n",key); //print key
if (strcmp("output",key)==0)
{
printf("Line is output\n");
}
if (strcmp("input",key)==0)
{
readMore=0;
printf("Line is input\n");
fflush(stdin);
getchar();
return 0;
}
key[0]=0;
buf[0]=0;
} //end while
return 0;
}
Исправлено так:
......
int bytes_read;
int nbytes = 100;
while(readMore)
{
/* These 2 lines are the heart of the program. */
p = (char *) malloc (nbytes + 1);
bytes_read = getline (&p, &nbytes, stdin);
....