#include <stdio.h>
#include <string.h>
void cop(char sl,int m)
{
char st[100];
if(m>strlen(sl))
printf("输入的字符串过短或m太大!\n");
else
{
strcpy(st,sl+m);
printf("新的字符串为:%s",st);
}
}
void main()
{
char sl[100];
int m;
printf("请输入字符串sl以及m:\n");
scanf("%s%d",sl,&m);
cop(char sl,int m);
}
----------------解决方案--------------------------------------------------------
将字符串的第m个字符开始的全部字符复制成另一个字符串,要求在主函数中输入字符串及m的值并输出复制结果,在被调用函数中完成复制
----------------解决方案--------------------------------------------------------
你写的这个程序有几处错误。
第一,在copy函数中,第一个参数不应该是char类型,应该是一个数组或者更简单的定义为指针。因为在后面你用到了求字符串的长度和复制操作,所以也应该是数组(或者指针)。
第二,你的主函数调用子函数的时候,那个实在参数就不用写它的类型了。这样不但多次一举,反而编译出错,直接就是char(s1,m);
第三,因为你的打印输出是在子函数中,那么子函数在调用之后立即就释放了,所以最好还是在主函数了。。。当然了,这一条,无关紧要了!!
----------------解决方案--------------------------------------------------------
#include <stdio.h>
#include <string.h>
void cop(char *sl,int m)
{
char st[100];
if(m>strlen(sl))
printf("输入的字符串过短或m太大!\n");
else
{
strcpy(st,sl+m);
printf("新的字符串为:%s",st);
}
}
void main()
{
char sl[100];
int m;
printf("请输入字符串sl以及m:\n");
scanf("%s%d",sl,&m);
cop( sl, m);
int a;
scanf("%d",&a);
}
因为我的输出结果立刻就消失了,所以无法看到运行结果,最后我设置需要输入一个数值a 来暂停;呵呵,也许有更好的方法吧
[此贴子已经被作者于2007-10-20 17:41:26编辑过]
----------------解决方案--------------------------------------------------------
----------------解决方案--------------------------------------------------------
那个不用加了,那个是我用的Vc++的环境,所以有那个
----------------解决方案--------------------------------------------------------
现在我给去掉了
----------------解决方案--------------------------------------------------------
指出字符串传递时,可以用指针
谢谢~~
----------------解决方案--------------------------------------------------------