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