4.编一程序,将字符串中的第m个字符开始的全部字符复制成另一个字符串。
要求在主函数中输入字符串及m的值并输出复制结果,在被调函数中完成复制。
1)请问这道题怎么做,我这样写,但总是报错:[Error] expected primary-expression before 'char'
2)如何给字符串赋值,这样写对吗? str3[15]= char fun(str1,m)
#include
#include
char fun(char *,int );
int main()
{char str1[15],str3[15];
int m;
gets(str1);
scanf("%d",&m);
str3[15]= char fun(str1,m)
puts(str3);
}
char fun(char *p,int m)
{ char str2[15];
for(;p!='\0';m++){
str2[15]=(p+m);
return str2[m];
}
}
str3[15]= char fun(str1,m)这没写不对,直接 用 str3= fun(str1,m)
另外,fun函数中的str2作用范围仅仅在fun函数中,出了fun函数就被回收了,这没写是不对的。
代码修改了一下,运行结果:
代码:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char* fun(char*, int,char* );
int main()
{
char str1[15]; //原字符串
char str2[15]; //需要替换成的字符串
char* out;
int m;
gets(str1); //读入原字符串
scanf("%d", &m); //读入长度
getchar();//吸收回车符
gets(str2); //读取需要替换成的字符串
out = fun(str1, m,str2);
printf("%s", out);
return 0;
}
//将p字符串第m个字符之后的字符替换为t
char* fun(char* p, int m, char* t)
{
int i = 0;
int len = strlen(p) - m + strlen(t) + 1; //得到新字符串的长度
char* str2 = (char*)malloc(strlen(p) + 1);
for (i = 0; i < m - 1; i++) //先把前m-1个字符复制到新字符串中
str2[i] = *(p + i);
//将t中的字符复制到新字符串中
for (; *t != '\0'; i++, t++)
str2[i] = *t;
str2[i] = 0;
return str2;
}