自编写C语言求子串函数substr,请大家提出宝贵意见
#include <stdio.h>
#include <string.h>
//字符串子串截取函数
//时间:2012.6.30
//作者:开心就好 QQ:32493835
char * substr(char *str,int star,int len)
{
char s[100];
int k1,k2;
if(star<0 || len<0)
return NULL;
puts(str);
for(k1=star-1,k2=0;k1<star+len-1;k1++,k2++)
{
s[k2]=str[k1];
// putchar(str[k1]);
}
s[k2]='\0';
return s;
}
int main(int argc, char *argv[])
{
char *p,*q;
int star,len;
printf("请输入一串字符");
gets(p);
printf("请输入要截取字串的起始位置和长度(例如3,4):");
scanf("%d,%d",&star,&len);
q=substr(p,star,len);
printf("其子串为:%s",q);
return 0;
}
我有个问题,就是将最后面的printf("其子串为:%s",q);#include <string.h>
//字符串子串截取函数
//时间:2012.6.30
//作者:开心就好 QQ:32493835
char * substr(char *str,int star,int len)
{
char s[100];
int k1,k2;
if(star<0 || len<0)
return NULL;
puts(str);
for(k1=star-1,k2=0;k1<star+len-1;k1++,k2++)
{
s[k2]=str[k1];
// putchar(str[k1]);
}
s[k2]='\0';
return s;
}
int main(int argc, char *argv[])
{
char *p,*q;
int star,len;
printf("请输入一串字符");
gets(p);
printf("请输入要截取字串的起始位置和长度(例如3,4):");
scanf("%d,%d",&star,&len);
q=substr(p,star,len);
printf("其子串为:%s",q);
return 0;
}
改用puts(q)会输出乱码,为什么?