2015-04-16 3 views
-2

Это школьное задание, но я не могу заставить свою петлю работать. Мы должны использовать scanf и завершать цикл, когда вводится EOF. Это часть кода, который является проблемой:scanf EOF и Loops

{int 
main(void){ 
    char str[MAX]; 

    while(scanf("%s", str) != EOF) 
    { 
    printf("\nEnter a String: "); 
    scanf("%s", str); 
    two_ele_subs(str); 
    } 


    return 0; 
} 
+2

Что на самом деле происходит при запуске этого кода? –

+0

И вы не можете ввести 'EOF', это не символ. –

+1

Это компилируется ?? – gongzhitaao

ответ

1

sscanf возвращает количество переменных для чтения, что в вашем случае является только один, или EOF (т.е. -1) в случае конца файла , Поэтому я предлагаю вам использовать другой подход, например:

#include <stdio.h> 
#define MAX 100 

int main(void){ 
    char str[MAX]; 
    int retVal; 

    printf("\nEnter a String: "); 
    while((retVal = scanf("%s", str)) == 1 || retVal != EOF) 
    { 
    printf("\nEnter a String: "); 
    two_ele_subs(str); 
    } 
    return 0; 
} 
Смежные вопросы