Memory 在C语言中修剪指针字符串时出现内存故障

Memory 在C语言中修剪指针字符串时出现内存故障,memory,segmentation-fault,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)) {

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

代码:

 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);
 }
char*trimfun(char*st){
int i=0,j;
/*从末端修剪空间和选项卡:*/
i=strlen(st)-1;
而((st[i]='')| |(st[i]='\t')){
我--;
}

如果(i如果整个字符串
st
是空白怎么办

在这种情况下,
while
循环:

while((st[i]==' ')||(st[i]=='\t')) {    i--;    }
不会在
i==0时终止

这可能是seg故障的原因

尝试:


乍一看很好,但是您有两个无法访问的free,未使用的j和未定义的s。传入的字符串之一可能不是以null结尾的吗?
while ( ( i >= 0 ) && ( (st[i]==' ') || (st[i]=='\t') ) ) ) {
    i--;    
}