段错误原因???
char *rtspace(char *str)
{
char *it=NULL; //指针最好初始化下
while( *str == ' ' && *str)++str;
it=str;
while(*str)str++; //指针定到末尾
while(*(--str)==' '); //去除最后的空格
*(++str) = '\0';
return it;
void main()
{
printf("%s\n",rtspace(" xianren.net zhen nb "));
}
在CSDN上找到这段实现字符串去首尾字符的代码,但执行时总是报段错误,在*(++str) = '\0'; 这句的时候
请问大家是什么原因?
[解决办法]
帮你写了一个
- C/C++ code
char *strtrim(char *str){ if(!str) return NULL; if(!*str) return str; char *tp = str + strlen(str); --tp; while(' ' == *tp) --tp; *++tp = '\0'; tp = str; while(' ' == *tp) ++tp; strcpy(str, tp); return str;}
[解决办法]
" xianren.net zhen nb "这样定义的话是一个只读区的内容,是无法修改的,试下这个:
- C/C++ code
char str[] = " xianren.net zhen nb ";printf("%s\n",rtspace(str));
[解决办法]
- C/C++ code
#include <stdio.h>char *rtspace(char *str) { char *it=NULL; while( *str == ' ' && *str) ++str; it=str; while(*str) str++; while(*(--str)==' '); *(++str) = '\0'; //就是这段代码出的问题,二楼说的对 return it;}