有一字符串,包含n个字符。写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。
Input数字n一行字符串数字mOutput从m开始的子串SampleInput6abcdef3SampleOutputcdef主要是怎样输入一个数来控制字符串个数,我发...
Input
数字n
一行字符串数字
m
Output
从m开始的子串
Sample Input
6
abcdef
3
Sample Output
cdef
主要是怎样输入一个数来控制字符串个数,我发现一般的答案都没输入个数!想请教一下C语言高手!
代码完整最好,我好参考和调试检验。 展开
数字n
一行字符串数字
m
Output
从m开始的子串
Sample Input
6
abcdef
3
Sample Output
cdef
主要是怎样输入一个数来控制字符串个数,我发现一般的答案都没输入个数!想请教一下C语言高手!
代码完整最好,我好参考和调试检验。 展开
11个回答
推荐于2017-09-02
展开全部
#include <stdio.h>
#include<string.h>
void main ()
{
int i,m,n;
char str[100]={0};
printf("输入n:");
scanf("%d",&n);
getchar();
for(i=0;i<n;i++)
str[i]=getchar();
printf("输入m:");
scanf("%d",&m);
printf("%s\n",str+m-1);
}
#include<string.h>
void main ()
{
int i,m,n;
char str[100]={0};
printf("输入n:");
scanf("%d",&n);
getchar();
for(i=0;i<n;i++)
str[i]=getchar();
printf("输入m:");
scanf("%d",&m);
printf("%s\n",str+m-1);
}
追问
该代码简单易懂,可能即将成为最佳答案!
展开全部
#include <stdio.h>
#include<string.h>
void copystr(char* d,char* s,int n)
{
strcpy(d,s+n-1);
}
void main ()
{
char st1[100];
char st2[100];
int n,m,i;
printf("输入n:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("输入第%d个字串:",i+1);
getchar();
gets(st1);
printf("输入m:");
scanf("%d",&m);
copystr(st2,st1,m);
printf("%s\n",st2);
}
}
#include<string.h>
void copystr(char* d,char* s,int n)
{
strcpy(d,s+n-1);
}
void main ()
{
char st1[100];
char st2[100];
int n,m,i;
printf("输入n:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("输入第%d个字串:",i+1);
getchar();
gets(st1);
printf("输入m:");
scanf("%d",&m);
copystr(st2,st1,m);
printf("%s\n",st2);
}
}
追问
谢谢参与,你的答案正确,我正在比较筛选最佳答案,我也希望能是你!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
#include <stdlib.h>
void ncpy(char *p,char *q,int m)
{
p=p+m-1;
while(*q++=*p++)
{
;
}
}
int main(void)
{
int n,m;
char *p,*q;
scanf("%d",&n);
p=(char *)malloc(sizeof(char)*(n+1));
scanf("%s",p);
scanf("%d",&m);
q=(char *)malloc(sizeof(char)*(n-m+2));
ncpy(p,q,m);
puts(q);
free(p);
free(q);
return 0;
}
#include <stdlib.h>
void ncpy(char *p,char *q,int m)
{
p=p+m-1;
while(*q++=*p++)
{
;
}
}
int main(void)
{
int n,m;
char *p,*q;
scanf("%d",&n);
p=(char *)malloc(sizeof(char)*(n+1));
scanf("%s",p);
scanf("%d",&m);
q=(char *)malloc(sizeof(char)*(n-m+2));
ncpy(p,q,m);
puts(q);
free(p);
free(q);
return 0;
}
追问
你的答案正确!对于我来说也有点新奇!我正在比较筛选最佳答案,祝你好运!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
代码如下:
char input[100] = {};
char output[100] = {};
int n, m;
printf("n=");
scanf("%d", &n);
printf("input=");
scanf("%s", input);
printf("m=");
scanf("%d", &m);
int j = 0;
for (int i = m - 1; i < n && i < 100; i++, j++)
{
output[j] = input[i];
}
output[j] = '\0';
printf("output=%s", output);
getchar();
getchar();
input和output的数组大小一定要够大,C里不支持使用变量声明数组大小,也没有字符串,所以这个只能用一个尽可能大的数组来存储你输入的内容,以避免数组越界。
char input[100] = {};
char output[100] = {};
int n, m;
printf("n=");
scanf("%d", &n);
printf("input=");
scanf("%s", input);
printf("m=");
scanf("%d", &m);
int j = 0;
for (int i = m - 1; i < n && i < 100; i++, j++)
{
output[j] = input[i];
}
output[j] = '\0';
printf("output=%s", output);
getchar();
getchar();
input和output的数组大小一定要够大,C里不支持使用变量声明数组大小,也没有字符串,所以这个只能用一个尽可能大的数组来存储你输入的内容,以避免数组越界。
更多追问追答
追问
代码改了一下才能在VC中运行,还有追问字数有限,我减少了代码,运行第二部可以输入>n个字符,我还得考虑一下答案的可行性。
char input[100], output[100];
int n, m;
scanf("%d", &n);
printf("input=");
scanf("%s", input);
scanf("%d", &m);
int j = 0;
for (int i = m - 1; i < n && i < 100; i++, j++)
output[j] = input[i];
output[j] = '\0';
printf("output=%s",output);
追答
这代码是我刚写的,我也是很久没用了,现在的高级语言都有字符串了,根本不存在这个问题。我是自己试过好使才传上来的,不明白哪里有错误。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询