下面是我的源代码,请大侠们帮看看错在哪。。。
#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
}
#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;
}
#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);
}
下次记住哦本回答被提问者采纳
#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);
}
下次不要忘记了亲追问
谢谢了啊,不过前面一个大侠先回答了,只能采纳他了。还是非常感谢你。
#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);
}