输入一个字符串,将该字符串中从第m个字符开始的全部字符复制成另一个字符串,m由用户输入,值小于字符串

输入一个字符串,将该字符串中从第m个字符开始的全部字符复制成另一个字符串,m由用户输入,值小于字符串的长度。要求编写一个函数mcopy(char *s,int m)来完成。刚开始学,连调用函数都搞不清楚,再加上指针QAQ,下面的代码自己都觉得一团糟,不知道咋回事#include <stdio.h>#include <string.h>int mcopy(char *s,int m){ char str1[100],str2[100],i; for(i=0;str2[i]!='\0';i++) { str2[i]=str1[i+m-1]; } str2[i] = '\0';}int main(){ char str,str1[100],str2[100]; int m,j; printf("输入字符串:"); for(j = 0;j != '\0';j++) scanf("%s",&str1); printf("输入数字m:"); scanf("%d",&m); mcopy(&str,m); printf("%s",mcopy(&str,m));}

#include <stdio.h>
#include <string.h>
char s1[100];//添加此条语句
void mcopy(char *s,int m)//mcopy类型改为void,即无类型
{
int i;//i改为整型
for(i=0;s[i]!='\0';i++)//str2改为s,数组名称按实际修改,不再重复注释
//{ 大括号不需要,去掉
s1[i]=s[i+m-1];
//}大括号不需要,去掉
s1[i] = '\0';
}
void main()//看你程序最后并无返回值0,main函数定义为void
{
char s[100];//按题目提示定义字符数组名称为s
int m;//去掉j
printf("输入字符串:");
gets(s);//scanf读取字符串局限性比较大,遇空格、制表符都会结束,改用gets
printf("输入数字m:");
scanf("%d",&m);
mcopy(s,m);
puts(s1);
}

//运行示例:

温馨提示:答案为网友推荐,仅供参考
相似回答