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

可以运行 但是输出第一个字符串
#include <stdio.h>
int m=3;int i,j;
int sort(char *p3[],char *p4[])
{
for(i=m;i<10;i++){
p3[i]=p4[i];
}
}
int main(int argc, char *argv[])
{
char a[10]={"DIYICHUAN"};
char b[10]={"hhh/0"};

char *p1[10],*p2[10];
p1[0]=&a[0];p2[0]=&b[0];
sort(p1,p2);
printf("%s",*p1);

return 0;
}

这样:

#include<stdio.h>

#include<string.h> 

int main ()

{

void copystr(char *,char *,int);

int m;

char str1[20],str2[20];

printf("input string:");

gets(str1);

printf("which character that begin to copy?");

scanf("%d",&m);

if(strlen(str1) < m)

{

printf("input error!");

}

else

{

copystr(str1,str2,m);

printf("result:%s\n",str2);

}

return 0;

void copystr(char *p1,char *p2,int m)

{

int n;

n = 0;

while(n < m - 1)

{

n++;

p1++;

}

while(*p1 != '\0')

{

*p2 = *p1;

p1++;

p2++;

}

*p2 = '\0';

}

扩展资料:

注意事项

/*输入一个字符串,将该字符串中从第m个字符

开始的全部字符复制成另一个字符串。m由用户

输入,小于字符串的长度。*/

#include <stdio.h>

#include <stdlib.h>

void mcopy(char array1[],char array2[],int m)

{

    int i,j;

    for(i=m-1,j=0;array2[j]!=0;i++,j++)

        array1[i]=array2[j];

    array1[i]=0;

}

int main()

{

   char array1[20],array2[10];

   int m;

   printf("Give array1:");

   gets(array1);

   printf("Give array2:");

   gets(array2);

   printf("Give m:");

   scanf("%d",&m);

   mcopy(array1,array2,m);

   printf("After changed:");

   puts(array1);

   return 0;

}

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-10-22

#include<stdio.h>

#include<string.h>

intcopy(char*p1,char*p2,intm);

intmain()

{

charstr1[40],str2[40];

printf("输入第一个字符串:\n");

gets(str1);

intm;

printf("输入第m个字符开始:\n");

scanf("%d",&m);

if(strlen(str1)<m)

printf("错误");

else

{

copy(str1,str2,m);

printf("%s",str2);

}

return0;

}

intcopy(char*p1,char*p2,intm)

{

intn;

n=0;

while(n<m-1)

{

n++;

p1++;

}

while(*p1!='\0')

{

*p2=*p1;

p1++;

p2++;

}

}

扩展资料

C语言字符指针字符串复制

#include<stdio.h>

voidcopy(chardststr[],charsrcstr[]);

intmain()

{

chara[100],b[100];

printf("Pleaseenterastring:");

gets(a);//输入字符串,存放数组a中

copy(b,a);//将字符数组a中的字符串复制到b中

printf("Thecopyis:\n");

puts(b);//输出复制后的字符串b

return0;

}

voidcopy(char*dststr,char*srcstr)

{

while(*srcstr!='\0')//循环直到字符srcstr[i]是字符串的结束标志为止

{

*dststr=*srcstr;//复制当前指针所指向的字符

srcstr++;//使srcstr指向下一个字符

dststr++;//使dststr指向下一个存储单元

}

*dststr='\0';//在字符串dststr的末尾添加字符的结束标志,避免复制的字符串溢出

}

/*

//或则函数copy()编写成这样

voidcopy(char*dststr,char*srcstr)

{

do

{

*dststr=*srcstr;//复制当前指针所指向的字符

srcstr++;//使srcstr指向下一个字符

dststr++;//使dststr指向下一个存储单元

}while(*srcstr!='\0');//循环直到字符srcstr[i]是字符串的结束标志为止

}

*/

事实上,还可以如下更为简洁的形式编写函数copy():

voidcopy(char*dststr,char*srcstr)

{

while((*dststr++=*srcstr++)!='\0')//循环直到字符srcstr[i]是字符串的结束标志为止

{}

}

本回答被网友采纳
第2个回答  2012-10-05
当然是一个字符了 你的函数的参数应该如下改
#include <stdio.h>
int m=3;int i;
int sort(char *p3,char *p4)
{
for(i=m;i<10;i++){
p3[i]=p4[i];
}
}
int main(int argc, char *argv[])
{
char a[10]={"DIYICHUAN"};
char b[10]={"hhh/0"};

char *p1,*p2;
p1=&a[0];
p2=&b[0];
sort(p1,p2);
printf("%s",*p1);

return 0;
}追问

你这个运行错误啊

追答

将int sort(char *p3,char *p4);
改为 void sort(char *p3,char *p4);

printf("%s",*p1);

改为
printf("%s",p1);

本回答被提问者和网友采纳
第3个回答  2012-10-05
#include <stdio.h>
int m=3;int i,j;
void sort(char st[],char ss[])
{
for(i=m;i<10;i++){
st[i]=ss[i];
}
}
int _tmain(int argc, _TCHAR* argv[])
{
char a[10]={"DIYICHUAN"};
char b[10]={"hhh/0"};

sort(a,b);
printf("%s",a);

return 0;
}追问

恩 很对 但是要用指针哥们~

c语言 输入一个字符串,将该字符串中从第m个字符开始的全部字符复制到另...
void copystr(char *,char *,int);int m;char str1[20],str2[20];printf("input string:");gets(str1);printf("which character that begin to copy?");scanf("%d",&m);if(strlen(str1) < m){ printf("input error!");} else { copystr(str1,str2,m);printf("result:%s\\n"...

...函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串...
char *s2,int m); char s1[20]; char s2[20]; \/\/n=sizeof(s1)\/sizeof(int); \/\/n=sizeof(s1)会返回20,但这明显不是你需要的 gets(s1); printf("输入字符串为:%s ",s1);

...将此字符串中从第m个字符开始的全部字符复制成为另一个字符串...
include<stdio.h>void copystr(char *s,int m,char *p){for(s+=m-1;*p++=*s++;);}int main(){char s1[200],s2[100]; int m; gets(s1); scanf("%d",&m); copystr(s1,m,s2); printf("%s\\n",s2); return 0;}

...函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串...
void main(){ char a[]="I am a student.I must study hard!",b[34];char *p,*p1=b;int m;printf("原字符串是:\\n%s\\n",a);printf("请输入m的值\\n");scanf("%d",&m);for(p=a+m;*p1++=*p++;);printf("复制后的字符串是:\\n%s\\n",b);} 输入5回车 结果输出 a stude...

从键盘输入一个字符串,将其中的小写字母全部转换为大写字母,然后输出...
实现该功能的吃语言具体代码如下:include <stdio.h> include <stdlib.h> include <string.h> int main(){ FILE *fp;int i=0;char str[100];printf("请输入字符串,并且以感叹号!结束:\\n");if((fp=fopen("test.txt","w"))==NULL)\/\/打开输出文件并使fp指向此文件 { printf("无法打开...

...将字符串computer赋给一个字符数组,然后从第一个字母开始间隔的输出...
include <stdio.h> include <string.h> void main(int argc, char **argv){ char str[] = "computer";char *pstr;int i;pstr = str;for(i = 0; i < strlen(str); i += 2){ printf("%c", *(pstr + i));} printf("\\n");} ...

c++,c语言把一个字符串复制到另外一个字符串中。我不明白为什么要在复制...
没有初始化的时候。编译器默认分配的字符,就是那些乱码 烫~~~输出puts函数是遇到'\0'结束符就结束字符串的输出,没有结束符标志自然全部输出,会有乱码 如果你不进行str2[i] = '\\0';赋值的话。那你在最开始 str2[80]要进行初始化 str2[80]=0;这样就一样的效果。有问题请追问 ...

C语言输入一串字符串从第n个字符开始截取m个字符组成一个新的字符串输 ...
2、进入源文件的目录下,在终端输入命令gcc -o t test.cpp。3、输入.\/t命令,运行生成的可执行文件。4、运行结果为baidu。5、strncpy 的函数原型char *strncpy(char *dest,char *src,size_t n),我们在复制src的前n个字符到dst中。6、如果超过src的字符串长度,自动复制完全部的字符串 。

c语言怎么把字符串中的某一部分提取出来?
1. 使用`strcpy`函数:`strcpy`函数可以将一个字符串复制到另一个字符串中。通过指定源字符串的起始位置和复制的长度,可以提取源字符串中的某一部分。例如,想要提取从第3个字符开始的5个字符,可以这样操作:c char src[] = "abcdefg";char dest[6]; \/\/ 存储提取的字符串,长度为5,再加一...

:从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一...
exit(1);} printf("enter the char\\n");ch=getchar();while(ch!='q') \/*用q来跳出循环比较方便*\/ { fputc(toupper(ch),pfile);putchar(toupper(ch));\/*不明白这里为什么不是输入一个字符就立刻输出而是等到按下回车才全部一起输出!!! *\/ scanf("%c",&ch); \/*经测试,输...

相似回答