字符指针的引用问题

sql_xeppp 2015-02-13 09:58:14
char * splitstr(char* str)
{
char * spstr;
char arr[arrlen]={'\0'};
int i =0;
int idx = 0;
char c;
for(;str != '\0' ;++i)
{
c = str[i];
if(isalnum(c))
{
arr[idx]=c;
++idx;
}
else
{
if(idx > 0)
break;
}
}
arr[idx]='\0';
str = &str[i];
printf ("split str is %s \n",str);
spstr = arr;
return spstr;
}

void splitstr2stack(tstack *sk ,char * str)
{
char * sp=0;
if( str != '\0')
{

while ((sp = splitstr(&str[0])) != '\0')
{
//push(sk,sp);
printf("output is %s , %s \n",sp,str);
}
}
}

按指针传递 应该修改原字串 但这个函数死循环了 请解答! 多谢
...全文
103 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
代码一堆问题,给你指出其中一个:
for(;str != '\0' ;++i)
--------------------------->
for(;(*str) != '\0' ;++i)
自信男孩 2015-02-13
  • 打赏
  • 举报
回复
可以考虑用另外一个指针处理,或者使用一个新的字符数组来拷贝str
自信男孩 2015-02-13
  • 打赏
  • 举报
回复
   arr[idx]='\0';
   str = &str[i];    //这个地方的问题;
   printf ("split str is %s \n",str);
   spstr = arr;
sql_xeppp 2015-02-13
  • 打赏
  • 举报
回复
知道我的问题在哪了 传的是个指针 没错,但我在splitstr函数里改了str指针的值 但没有改更改函数splitstr2stack中的值 想问下 我应该怎么样做呢?
layershow 2015-02-13
  • 打赏
  • 举报
回复
“按指针传递 应该修改原字串” char * 可以修改指针指向的字符串内容,而不是指针本身 char ** 可以 char * foo(char * p) { p = 1; // 根本不影响外面的指针 *p = 'a'; // 可以修改 p 指向的内容 return p; } foo(pStr);

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧