2016-01-06 185 views
0

當它發現100程序必須拆分字符串!還是?或者。 字符串必須包含\ n換行和!還是?或者。它是存在的。 test.txt的分割字符串

Lorem存有胡蘿蔔,增強回扣文件的例子,但他們occaecat時間 活力,如勞動和肥胖。在未來幾年,努力如果誰的學區nostrud aliquip出她的鍛鍊,長壽的優勢。 下載信息作爲電子名片E,其中我們做的任何身體的鍛鍊收到 辛苦,除了從中獲得一些優勢,但誰擁有任何 找到與那些誰將會是一個沒有惱人的 後果樂趣,或一個誰避免了疼痛的快感故障的權利,沒有意見?

我讀碼器到第一個令牌,在凌晨1點錯了嗎?

int main(){ 
    FILE *file; 
    char stringa[MAXCHAR]; 

    file = fopen ("prova.txt", "r"); 
    if (file == NULL){ 
     perror("errore nell'apertura del file"); 
     return (1); 
    } 
    while (fscanf(file, "%[^!?.]", stringa) != EOF) { 
     printf("Data from file:\n%s", stringa); 
     //break; 
    } 
    fclose(file); 

    return 0; 
} 

我的輸出:

Lorem存有胡蘿蔔,增強回扣,但他們occaecat時間 活力,如勞動和肥胖

感謝您的幫助......

+0

突破statemen TT插入意外 – Francesco

回答

0

您的讀碼器代替break高達找到的第一個令牌,但它把後面的令牌所以即使沒有「破解」程序將無法再讀取任何,它會進入一個無限循環一段時間,因爲你的條件沒有這麼好定義,它應該是:

while (fscanf(file, "%[^!?.]", stringa) == 1) //checks if text was read successfully 

而且你需要的時候遇到擺脫任何標記,這應該這樣做:

while (fscanf(file, "%[^!?.]", stringa) == 1) { 
     printf("Data from file: %s\n", stringa); 
     fscanf(file,"%*[!?.]"); 
    } 
1

退出,因爲你一旦你發現了.,或!?輸入使用break。 1
相信你想讓它通過\n更換任何輸入流中的這三個字符是什麼。
如果當時的情況下通過printf("\n")

+1

1不會就建議更換'休息去「with'的printf(‘\ n’);',因爲它並不真正認爲是必要的,但去除of'休息」是當場就避免了環的過早終止。 – mah