
C++题目求解答
设计一个函数copyp,将字符串s前n个字符复制到字符串t中。要求在主函数中输入字符串s,通过调用函数copyp得到字符串t并且输出字符串t#include<iostre...
设计一个函数copyp,将字符串s前n个字符复制到字符串t中。要求在主函数中输入字符串s,通过调用函数copyp得到字符串t并且输出字符串t
#include<iostream.h>
#include<stdio.h>
#define N 100;
void copyp(char s,char t,int n)
{
int i;
for(i=1;i<=n;i++)
{while(s[i]!='\0')
t=s[i];}
}
void main()
{
char s[N];
char t[N];
int n;
gets(s);
cin>>n;
copyp(s,t,n);
puts(t);
cout<<endl;
}
初学,不太懂,求解答。错误在哪里,或者有没有好点的写法 展开
#include<iostream.h>
#include<stdio.h>
#define N 100;
void copyp(char s,char t,int n)
{
int i;
for(i=1;i<=n;i++)
{while(s[i]!='\0')
t=s[i];}
}
void main()
{
char s[N];
char t[N];
int n;
gets(s);
cin>>n;
copyp(s,t,n);
puts(t);
cout<<endl;
}
初学,不太懂,求解答。错误在哪里,或者有没有好点的写法 展开
1个回答
展开全部
错误多了去了,基本概念都没懂,函数原型就错了,指针也没学;函数原型(声明)void copyp(char *s,char *t,int n),你要传递的是一个数组,记住,是一个数组,而不是一个字符,不是一个!,是一组!
然后我慢慢看代码,第一点,空字符也可以复制('\0'),所以,while条件可以取消,第二,while还有可能越界(就是N的值可能大于数组,这个没有处理),第三,你的t(算了,函数原型都搞错了);
给你写一个,void copyp(char *s,char *t,int n)
{
int i=0;
while((*s++=*t++)!='\0')
if(++i>n);
{
*s='\0';
break;
}
}我写的函数是把t复制到s中,你自己对调一下就是。
然后我慢慢看代码,第一点,空字符也可以复制('\0'),所以,while条件可以取消,第二,while还有可能越界(就是N的值可能大于数组,这个没有处理),第三,你的t(算了,函数原型都搞错了);
给你写一个,void copyp(char *s,char *t,int n)
{
int i=0;
while((*s++=*t++)!='\0')
if(++i>n);
{
*s='\0';
break;
}
}我写的函数是把t复制到s中,你自己对调一下就是。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询