2015-12-12 71 views
0

我一直在尋找一種刪除前導空格的標準方法,並且我發現了一個使用指針和isspace()的非常簡單的方法,但是我們的教授不允許我們使用<ctype.h>庫。以下工作?刪除沒有isspace的前後空格()

char LeadingSpace(char *line) { 
    while (line[0] == ' ') { 
     line++; 
    } 
    return line; 
} 

我是新的C所以不完全知道如何工作的指針,但如果我移動鼠標指針,每次我找到一個前導空格的話,我將只需要檢查line[0],對不對?

+3

是該代碼會做你想做的,但是,如果'line'使用'malloc()函數分配的'你不能使用返回指針'免費()'。另外,它似乎錯過了函數定義中的'*'。最後,你應該知道'isspace()'不僅不會忽略''''而是''\ t'',''\ n''和''\ r''。 –

+0

@iharob好的,非常感謝!從中學到很多東西。 –

回答

1

是 - 檢查line[0] == ' '是好的:

,但此行

char LeadingSpace(char *line) { 

應該

char* LeadingSpace(char *line) { 

當你正在返回一個字符指針

+0

我有疑問。問題是他回來了一個角色? – Cherubim

+0

請重新閱讀 - 行的類型是'char *' - 我糾正的位 –

0

試試這個

char* LeadingSpace(char *line) { 
    while (line[0] == ' ' || line[0] == '\t' || line[0] == '\n' || line[0] == '\r') { 
     line++; 
    } 
    return line; 
} 

或本使用文件string.h頭

char* LeadingSpace(char *line) { 
    while (strchr(" \t\r\n", line[0])) { 
     line++; 
    } 
    return line; 
} 
+0

請注意,使用開關會更清晰。 'strchr()'技巧非常好。 –