c语言 输入一个字符串,将该字符串中从第m个字符开始的全部字符复制到另一个字符串,m由用户输入

下面是我的源代码,请大侠们帮看看错在哪。。。#defineN20#include<stdio.h>voidmain(){intm,i;chara[N],b[N];prin... 下面是我的源代码,请大侠们帮看看错在哪。。。

#define N 20
#include<stdio.h>
void main()
{
int m,i;
char a[N],b[N];
printf("请输入字符串:");
scanf("%s",a);
printf("请输入m:");
scanf("%s",&m);
for(i=0;b[i-1]!='\0';i++)
{
b[i]=a[i+m-1];
}
printf("第m个后面的字符串为%s\n",b);
}
展开
 我来答
珈蓝惜梦qF
2019-10-03 · TA获得超过654个赞
知道答主
回答量:33
采纳率:0%
帮助的人:1.3万
展开全部

正确程序如下:

#define N 20//宏定义:定义数组长度

#include<iostream>

using namespace std;

int main()

{

 int m, i;//定义指定复制元素起始坐标和循环变量

 char a[N], b[N];//定义两个长度相同的数组

 cout << "请输入字符串:";

 gets_s(a);//按照提示:利用字符输入函数进行字符串输入并存到a数组中

 cout << "请输入m:";

 cin >> m;//按照提示:输入指定复制元素起始坐标

 for (i = 0; b[i - 1] != '\0'; i++)//遍历从指定元素开始,到字符串结束停止

 {

  b[i] = a[i + m -1 ];//从a数组第m个元素开始依次复制给b数组

 }

 cout << "第m个后面的字符串为:" << b << endl;//输出b数组内容(即结果)

 return 0;

}

输出结果如下:


扩展资料:

//指针方法完成字符串的复制

#include<stdio.h>

void copy_string(char *from,char *to);  //函数声明

void main()

{   

char *fro,*t;//定义两个指针变量

char a[]="I am a teacher.";//定义两个字符串数组

char b[]="You are a student.";

printf("a=%s\nb=%s\n",a,b);//输出a,b两数组内容

fro=a;t=b;//将a数组初始地址给fro,b数组初始地址给t

printf("\ncopy string a to string b:\n");

copy_string(fro,t);//用函数进行COPY(此处不用带指针符号*,利用的地址直接传送)

printf("string a=%s\nstring b=%s\n",a,b);

}

void copy_string(char* from,char* to)

{   

while(*from!='\0')//数组未结束则继续

{

*to=*from;//数组元素复制

from++;to++;//指向下一个数组元素地址

}

*to='\0';//字符串的最后一个字符为\0

}

taoml1234
2010-10-05 · TA获得超过997个赞
知道小有建树答主
回答量:421
采纳率:0%
帮助的人:401万
展开全部

#include<stdio.h>

#include<string.h>  //支持strlen()的应用

#include<stdlib.h>  //支持exit(1)

char *mcopy(char*s ,int m);   //函数的定义

void main(void)

{

 char str1[100];

 char *str2;

 

 int m;

 printf("请输入你要输入的字符串\n");

 gets(str1);

 printf("请输入你要开始复制字符的位置m\n");

 scanf("%d",&m); 

 if(m>=strlen(str1))    //若输入m值过大,结束程序

 {

  printf("输入值超出字符串长度...\n");

  exit(1);

 }

 str2=mcopy(str1,m);  //程序的调用 

 for(int j=0;j<strlen(str2);j++) //把数组进行输出

  printf("字符串第%d个元素是%c\n",m++,str2[j]);   //字符的输出

}

char *mcopy(char*s ,int m)

{

 static char array[100];

 int count=0;

 for(int i=m-1;i<strlen(s);i++)

 {

  array[count]=s[i];

  count++;

 }

 return array;

}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiang9988zh
推荐于2017-12-16 · 超过13用户采纳过TA的回答
知道答主
回答量:90
采纳率:0%
帮助的人:34万
展开全部
#define N 20
#include<stdio.h>
void main()
{
int m,i;
char a[N],b[N];
printf("请输入字符串:");
scanf("%s",a);
printf("请输入m:");
scanf("%d",&m);
for(i=0;b[i-1]!='\0';i++)
{
b[i]=a[i+m-1];
}
printf("第m个后面的字符串为%s\n",b);
}
下次记住哦
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
陈浩南的手下
2012-04-18
知道答主
回答量:32
采纳率:0%
帮助的人:9.4万
展开全部
#define N 20
#include<stdio.h>
void main()
{
int m,i;
char a[N],b[N];
printf("请输入字符串:");
scanf("%s",a);
printf("请输入m:");
scanf("%d",&m);
for(i=0;b[i-1]!='\0';i++)
{
b[i]=a[i+m-1];
}
printf("第m个后面的字符串为%s\n",b);
}
下次不要忘记了亲
追问
谢谢了啊,不过前面一个大侠先回答了,只能采纳他了。还是非常感谢你。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bookable
2012-04-18
知道答主
回答量:30
采纳率:0%
帮助的人:6万
展开全部
#define N 20
#include<stdio.h>
void main()
{
int m,i;
char a[N],b[N];
printf("请输入字符串:");
scanf("%s",a);
printf("请输入m:");
scanf("%c",&m);
for(i=0;a[i]!='\0';i++)
{
b[i]=a[i+m-1];
}
b[i]='\0';
printf("第m个后面的字符串为%s\n",b);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式