内存在C语言中修剪指针字符串时出错

时间:2012-09-13 14:43:01

标签: memory segmentation-fault

我在修剪字符串末尾的空格时遇到了内存错误错误。任何人都可以帮我解决下面的代码。

 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);
 }

由于 拉姆金

1 个答案:

答案 0 :(得分:0)

如果整个字符串st是空格怎么办?

在这种情况下while循环:

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

不会在i==0终止!

这可能是你的段错误的原因。

尝试:

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