1

文字列の末尾からスペースを削除しているときに、メモリ フォールト エラーが発生します。誰でも以下のコードを解決するのを手伝ってくれますか?

コード:

 char* trimfun(char *st) {
    int i=0,j;
    /* Trim spaces and tabs from end:*/
    i=strlen(st)-1;
    while ((st[i]==' ')||(st[i]=='\t')) {   
        i--;    
     }

    if (i<(strlen(st)-1)) {
        st[i+1]='\0';
    }
    return st;
    // free (s);
    // free (st);
 }

ありがとうラムキ

4

1 に答える 1

0

文字列全体stが空白の場合はどうなりますか?

その場合、whileループ:

while((st[i]==' ')||(st[i]=='\t')) {    i--;    }

で終了しませんi==0!

これがセグフォルトの原因である可能性があります。

試す:

while ( ( i >= 0 ) && ( (st[i]==' ') || (st[i]=='\t') ) ) ) {
    i--;    
}
于 2013-01-14T16:24:23.723 に答える