读书人

段异常原因?

发布时间: 2012-03-29 12:53:12 作者: rapoo

段错误原因???
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;} 

读书人网 >C语言

热点推荐