2015-09-23 25 views
-4

我想創建一個程序,從文本文件中讀取一個句子,然後只打印不以元音開頭的單詞。如何從數組中單獨獲取每個單詞並測試它是否適合特定條件? (C)

所以我寫了一個程序,讀取文本文件並將其複製到數組中。現在,我正在努力測試數組中每個單詞是否符合條件(而不是以元音開頭)。

到目前爲止,我只能通過使用strtok函數和使用空格作爲分隔符來實現這一點,但是這也消除了句子中的空格,而這並不是理想的結果。

例如,如果文本文件包含以下語句: 每天一個蘋果會讓醫生遠離醫生。

輸出將是: daykeepsthedoctor

雖然所需的輸出是: 一天,醫生

這是我的計劃:


#include <stdio.h> 
#include <string.h> 

int vowelwords(); 

int main() 
{ 

    vowelwords(); 
    return 0; 
} 

int vowelwords() 
{ 
    FILE *fPtr; 
    char text[50]; 
    fPtr = fopen("TEXT1.txt","r"); //to open file 

    if (fPtr == NULL) //Catch error in fopen function 
    { 
     printf("Error in opening file\n"); 
     return 1; 
    } 

    fgets(text, 50, fPtr); 
    fclose(fPtr); 

    char *c; 
    c = strtok(text," "); 

    while(c!= NULL) 
    { 
     if(c[0]=='a'||c[0]=='A'||c[0]=='e'||c[0]=='E'||c[0]=='u'|| 
      c[0]=='U'||c[0]=='i'||c[0]=='I'||c[0]=='o'||c[0]=='O') 
     { 
     } 

     else 
     { 
      printf("%s", c); 
     } 

     c = strtok(NULL," ");  
    } 

    printf("\n"); 
} 
+0

爲什麼不用'printf(「%s」,c);'帶一個額外的空間? – Benoit

+0

非常感謝!我不知道我怎麼沒有想到這一點。 –

回答

0

在打印過程中留下的空間printf in函數int vowelwords() -

printf("%s ", c); 
     ^leave a space 
+0

謝謝你的幫助! –

+0

@MrA歡迎,乾杯! – ameyCU

相關問題