指针取子字符串 帮帮忙改错

来源:百度知道 编辑:UC知道 时间:2024/05/11 17:13:23
#include “stdio.h”
char *subs( char *s, int n, int m )
{
char *p;
int i;
p=*s;
while (*p++!=NULL) i++;
if ( n<0||m<0||m<n||m>i )
{
printf ( “Substring invalid ! \n” );
break ;
}
p=s+n;
*( p+m+1)=’\0’ ;
return (p) ;
}
main()
{
char * s1= “ The C program language! ” ;
printf ( “%s\n ” ,subs(s1, 5, 16) );
}
谁能给出正确程序啊

1、i 没有初始化;i是为了获得串的总长度吧;
2、M 为什么要限制必须不能小于 N啊,m是子串长度,n是开始位置吧;
3、
p=*s;
……
p=s+n; //这里貌似应该是p = *(s + n)

重装点脑了,没环境,就看出这些
试着改下