#include<stdio.h>
void main(){
void copy(char*,int,int);
int n,m;
char string[100];
printf("enter a number n:");
scanf("%d",&n);
printf("enter a string:");
scanf("%s",&string);
printf("enter a number m:");
scanf("%d",&m);
copy(string,n,m);
return 0;
}
void copy(char*str,int n,int m){
int i,j;
char string[100];
char*p=string;
i=m-1;
j=0;
str=str+i;
for(;i<n;i++,j++){
*(p+j)=*(str++);
printf("%c\n",*(p+j));
}
}
printf用法
//以下程序用于获得输入值i,j并将其输出(i,j之间以逗号隔开)
#include<stdio.h>
int main()
{
int i,j;
scanf("%d%d",&i,&j);
printf("i=%d;j=%d",i,j);
return 0;
}
//以下程序用于输出“百度百科”
#include<stdio.h>
int main()
{
printf("百度百科");
return 0;
}
format
Format参数是包含三种对象类型的一个字符串:
*无格式字符复制到输出流;
*转换规范,每个规范导致在值参数列表中检索1个或更多个项;
*转义序列。
通常意义上format的格式如下:
%[flags][width][.prec][F|N|h|l]type
#include
#include
int main()
{
int m;
void copy(char *s1,char *s2,int m);
char s1[20];
char s2[20];
//n=sizeof(s1)/sizeof(int);
//n=sizeof(s1)会返回20,但这明显不是你需要的
gets(s1);
printf("输入字符串为:%s ",s1);
//这里用strlen(s1)可以得到实际字符串长度
scanf("%d",&m);
printf("m的值为:%d",m);
copy(s1,s2,m);
printf("result:%s\n",s2);
return 0;
}
void copy(char *p1,char *p2,int m)
{
int i=m;
while(*(p1+i-1))
{//没有必要纠结于n,直接通过字符串结束符判断就可以了
*(p2+i-m)=*(p1+i-1);
}
}
这样和你的程序更接近一些吧
这样就好了:
#include "stdafx.h"
#include
#include
int main()
{
int m,n;
void copy(char *s1,char *s2,int m);
char s1[20];
char s2[20];
printf("输入字符串: ");
gets(s1);
printf("输入m的值: ");
scanf("%d", &m);
copy(s1,s2,m);
printf("result: %s\n",s2);
getchar();
return 0;
}
void copy(char *p1, char *p2, int m)
{
p1 += m; // 移到第m个字符串
while(*p1) // 如果p1当前不为空,则复制,如果为'\0'就结束吧
{
*p2 = *p1; // 复制当前字符
++p1; // 向后移动
++p2; // 向后移动
}
*p2 = *p1; // 设置p2为'\0'
}