注册 登录
编程论坛 C++教室

请论坛中的c++高手帮忙看下这程序 谢谢

hujian1989 发布于 2011-10-18 22:00, 487 次点击
编写一函数,其功能是从已知字符串中指定位置p开始截取一个长度为len的子串。
 我的编的程序如下   运行后出现乱码 帮忙看下  谢谢
#include<iostream>
 #include<string>
 #include<conio.h>
 #define N 80
 using namespace std;
 char *subcut(char *a,int p,int len);
 char main()
 {
 char a[N+1],*ps;
 char *subcut(char*,int,int);
 int p,len;
 cout<<"请输入一个字符串:"<<endl;
 gets(a);
 cout<<"请输入指定位子和长度:"<<endl;
 cin>>p>>len;
 ps=subcut(a,p,len);
 cout<<ps;
 _getch();
 return 0;
 }
 char *subcut(char *a,int p,int len)
 {
 char substr[N+1];
 int i;
 char *ps;
 ps=substr;
 if(p<1||p>strlen(a)||len<1)
   cout<<"data error";
 else
   for(i=1,a=a+p-1;i<=len && *a!='\0';i++)
    *ps++=*a++;
 *ps='\0';
 return substr;
 }
2 回复
#2
lintaoyn2011-10-18 23:14
程序代码:
#include<iostream>
#include<string>
#include<conio.h>
#define N 80
using namespace std;
char *subcut(char *a,int p,int len);
char main()
{
    char a[N+1],*ps;
    char *subcut(char*,int,int);
    int p,len;
    cout<<"请输入一个字符串:"<<endl;
    gets(a);
    cout<<"请输入指定位子和长度:"<<endl;
    cin>>p>>len;
    ps=subcut(a,p,len);
    cout<<ps;
    delete ps;
    _getch();
    return 0;
}
char *subcut(char *a,int p,int len)
{
    char *substr = new char [N+1];
    int i;
    char *ps;
    ps=substr;
    if(p<1||p>strlen(a)||len<1)
        cout<<"data error";
    else
        for(i=1,a=a+p-1;i<=len && *a!='\0';i++)
            *ps++=*a++;
    *ps='\0';
    return substr;
}
注意编译器给你报的警告,你返回了一个临时对象,出现乱码是正常的。
#3
hujian19892011-10-19 08:34
非常感谢  这位兄弟的帮助  以后还请多多关照  呵呵。。。。
1