2015-04-16 135 views
-2

這是一個學校任務,但我無法讓我的循環工作。當EOF輸入時,我們必須使用scanf並終止循環。這是代碼的一部分,這是問題:scanf EOF和循環

{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; 
}