我想让自定义的函数copy把字符指针*p的地址用返回指针值的函数返回到主函数赋值给 *j 但是程序正常运行了但好像没有把地址传出来,希望有人能解答一下
程序目的:
编写一个程序,将字符串中的第m个字符开始的字符子串复制成另一个字符串。要求在主函数中输入字符串及m的值并输出复制结果,在被调函数中完成复制。
#include<stdio.h>
#include<string.h>
int main()
{
char *copy(char *s,int m);
int m;
char *str,*j;
printf("Please enter a string\n");
gets(str);
printf("Which m do you want to convert from\n");
scanf("%d",&m);
j=copy(str,m);
for(;*j!='\0';j++){
printf("%c",*j);
}
}
char *copy(char *s,int m)
{
char *p;
for(s+=(m-1);*s!='\0';s++,p++){
*p=*s;
}
return(p);
}
修改如下,供参考:
#include <stdio.h>
#include <string.h>
int main()
{
char *copy(char *s,int m);
int m;
char str[80],*j; //char *str,*j; //修改
printf("Please enter a string\n");
gets(str);
printf("Which m do you want to convert from\n");
scanf("%d",&m);
j=copy(str,m);
for(;*j!='\0';j++){
printf("%c",*j);
}
return 0;
}
char *copy(char *s,int m)
{
char *p,*q = s; //修改
while(*q) q++; //修改
if (m > (q - s)) return q;//修改
for(p = s, q = s + m - 1; *q!='\0'; p++,q++){//修改
*p=*q;
}
*p = '\0'; //修改
return(s); //修改
}
我改了一下但是不知道为什么输入字符串后直接就结束了
#include<stdio.h>
#include<string.h>
int main()
{
char copy(char *s,int m);
int m;
char *str;
printf("Please enter a string\n");
gets(str);
printf("Which m do you want to convert from\n");
scanf("%d",&m);
copy(str,m);
}
char copy(char *s,int m)
{
char *p;
for(s+=(m-1);*s!='\0';s++,p++){
*p=*s;
}
puts(p);
}