首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

段异常原因?

2012-03-29 
段错误原因???char *rtspace(char *str){char *itNULL//指针最好初始化下while( *str && *str)++

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

热点排行