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

下面是我的源代码,请大侠们帮看看错在哪。。。

#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);
}

正确程序如下:

#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

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-10-05

#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;

}

第2个回答  推荐于2017-12-16
#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);
}
下次记住哦本回答被提问者采纳
第3个回答  2012-04-18
#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);
}
下次不要忘记了亲追问

谢谢了啊,不过前面一个大侠先回答了,只能采纳他了。还是非常感谢你。

第4个回答  2012-04-18
#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);
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网