70,017
社区成员




代码:
#include<stdio.h>
#include<string.h>
char * substr(char *str,int n)
{
unsigned char len=strlen(str);
for(;len>0;len--)
{
if(str[len-1]==' ')
str[len-1]=0;
}
for(;n>0;n--)
{
str+=(strlen(str)+1);
}
return str;
}
int main(void)
{
char *str1;
char *str="123 456 789";
*str1=substr(str,2);
printf("str1 =%s\n",*str1);
return 0;
}
请专家指教,谢谢!
改为 str1=substr(str,2)
字符串常量不可修改,str1 未初始化且str += (strlen(str)+1); 逻辑错误
谢谢!我改成这样
#include<stdio.h>
#include<string.h>
char * substr(char *str,int n)
{
unsigned char len=strlen(str);
for(;len>0;len--)
{
if(str[len-1]==' ')
str[len-1]=0;
}
for(;n>0;n--)
{
str+=(strlen(str)+1);
}
return str;
}
int main(void)
{
char *str1;
char str[]="123 456 789";
*str1=substr(str,2);
printf("str1 =%s\n",str1);
return 0;
}
仿真调试,进入substr函数,发现str的值为“789”
可是最后又出同样的错
str的定义方式不对吧,这样的模式会让字符串成为常量而不能被修改,可以试试 str[]="... 这样的形式;下面一行的 printf() 语句里 str1 前不应有 *