有一字符串,包含n个字符。写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。

#include<stdio.h>
#include<string.h>

void main()
{
char a[100],b[100];
int i,n,m;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%c",&a[i]);
scanf("%d",&m);
strcpy(b,a+m);
printf("%s",b);
return 0;
}
这个为什么不对?用strcpy应该怎么做?在输入字符串时,gets怎么使用?

#include <stdio.h>
#include <string.h>
int main(int argc, char* argv[])
{
    char a[100],b[100];
    int i,n,m;
    scanf("%d",&n);
    getchar();          //用于接收掉上面输入数据后按的回车键,使a接收正确的字符
    for(i=0;i<n;i++){
        scanf("%c",&a[i]);
        getchar();   //用于接收掉上面输入数据后按的回车键
    }
    a[n]='\0';          //添加字符串的终止,会随strcpy复制到b,不然b以%s输出时会有乱码
    scanf("%d",&m);
    strcpy(b,a+m);
    printf("%s",b);
    return 0;
}

//使用gets
#include <stdio.h>
#include <string.h>
int main(int argc, char* argv[])
{
    char a[100],b[100];
    int i,n,m;
    gets(a);
    scanf("%d",&m);
    strcpy(b,a+m);
    printf("%s",b);
    return 0;
}

追问

可是为什么这两种都得不到正确结果

追答

已测试,答案正确。输入 abcde,2,输出cde

温馨提示:答案为网友推荐,仅供参考
相似回答