2015-10-15 114 views
0

當我輸入一個輸入時,問題在輸入字符串之前重複。fgets在輸入前讀取上一行

printf("Enter %d coefficients starting from the 0th degree.\nSeparate them by commas: ", degree+1); 
fgets(coeffs_string, MAX, stdin); 
for(i=0;i<strlen(coeffs_string);i++){ 
    if(coeffs_string[i]==','){ 
     commas++; 
     continue; 
    } 
    else if(isdigit(coeffs_string[i]) || coeffs_string[i]==' ') 
     continue; 
    else{ 
     printf("\007Error! A character was found during the input!\n"); 
       coeffs_string[0]='\0'; 
     commas=0; 
     break; 
    } 
} 

此外,它打印錯誤處理程序,即使我輸入正確的輸入。我嘗試使用scanf,但它只是停止。有沒有辦法讓fgets或scanf不能快速讀取輸入? *編輯:對不起,我忘了我的代碼的某些部分

+0

什麼是您的輸入,'ceoffs_string'?你能發佈更完整的代碼嗎? – artm

+1

*只是閱讀標題,所以這是一個猜測:*混合'scanf()'和'fgets()'...所顯示的代碼也是不完整的。 – pmg

回答

0
  1. 嘗試把一個fflush(stdout);printf()fgets()語句之間。或者從輸出中單獨獲取您的輸入。
  2. 通過fgets()返回的字符串包括的 行終止字符/ s的用戶通過按下輸入鍵 產生。您沒有明確處理這些字符,因此將始終顯示錯誤消息。