2015-04-20 28 views
1

嗨,我正在寫一個程序來計算用戶輸入的行數終止交流計劃,我有這樣的代碼:當用戶輸入一個空行

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

int readline(char line[], int max); 

/* count lines in input */ 
main() { 
int c, nl,max, i; 
max = 99; 
char line[100]; 
nl = 0; 


while ((readline(line, max) != 0)){ 
    ++nl; 

    } 
    printf("%d\n", nl); 
} 

/* readline: read a line from standard input, return its length or 0 
*/ 
int readline(char line[], int max) 
{ 
    if (fgets(line, max, stdin) == NULL) 
    return 0; 
    else 
    return strlen(line); 
} 

,但我不知道如何終止程序並將「nl」打印到屏幕上,我使用cygwin64終端編寫並執行程序。

感謝

回答

1
size_t n; 
while(fgets(line,max,stdin)) 
{ 
    n = strlen(line); 
    if(n == 1 && line[n-1] == '\n') 
    { 
    //This is a empty line 
    } 
} 

基本上fgets()帶有一個換行符,你可以用它來確認是否有該行或任何輸入剛進入一個換行符。

readline返回讀取的文本行。空行返回 , 空字符串。如果在讀取一行時遇到EOF,且行 爲空,則返回NULL。如果使用非空行讀取EOF,則將其視爲換行符。

因此您可以檢查空字符串。

1

變化的條件到這個樣子,

while ((readline(line, max) <= 1)){ 
    ... 
} 

當你進入,然後將新的空行新生產線將被放置在陣列英寸 因此,它給出strlen1

相關問題