当前位置: 代码迷 >> C语言 >> [求助]为什么不能调用?
  详细解决方案

[求助]为什么不能调用?

热度:59   发布时间:2007-10-20 13:23:37.0
[求助]为什么不能调用?

#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编辑过]


----------------解决方案--------------------------------------------------------
回复:(风的声音)#include
#include"stdafx.h"以前没见过。。。
----------------解决方案--------------------------------------------------------
那个不用加了,那个是我用的Vc++的环境,所以有那个
----------------解决方案--------------------------------------------------------
现在我给去掉了
----------------解决方案--------------------------------------------------------
回复:(风的声音)#include #include...
需要暂停的话可以用pause函数
指出字符串传递时,可以用指针
谢谢~~
----------------解决方案--------------------------------------------------------
  相关解决方案