| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 490 人关注过本帖
标题:c语言字符串很简单的问题
只看楼主 加入收藏
白山茶
Rank: 1
等 级:新手上路
帖 子:5
专家分:5
注 册:2018-1-3
结帖率:0
  已结贴   问题点数:20  回复次数:12   
c语言字符串很简单的问题
题目:Description


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

Input


数字n
一行字符串
 数字m

Output


从m开始的子串

Sample Input
6
abcdef
3

Sample Output
cdef






我的代码(试着写了一下,感觉没问题,就是一直试不出来):
#include<stdio.h>
int main ()
{
    char a[20];
    int m,n,i,j;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    scanf("%d",&a[i]);
    scanf("%d",&m);
    for(j=m-1;j<=n;j++)
    printf("%c",a[j]);
    return 0;
}

求大佬,谢谢啦
2018-01-03 22:35
丘山君
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:87
专家分:154
注 册:2017-11-15
  得分:4 
你之前有个问题,你的i从1开始的,到=i,但是数组是从a[0]到a[i-1],如果字符输满就会越界
而且我觉得字符串不必一个字符的输,就用gets,方便一点,个人观点
程序代码:
#include<stdio.h>
#include<stdlib.h>
int main ()
{
    char a[20];
    int m,n,i,j;
    gets(a);
    scanf("%d",&m);
    for(j=m-1;j<n;j++)
      printf("%c",a[j]);
}
2018-01-03 22:55
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:157
帖 子:6128
专家分:26766
注 册:2014-5-20
  得分:4 
#include<stdio.h>
int main ()
{
    char a[20];
    int m,n,i,j;
    scanf("%d",&n);
    while (getchar()!='\n') NULL;
    for(i=0; i<n; i++) //n<20
        a[i] = getchar();
    a[i] = '\0';
    while (getchar()!='\n') NULL;
    scanf("%d",&m);
    char *p=a+m-1;
    printf("%s\n",p);
    return 0;
}
2018-01-03 23:24
丘山君
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:87
专家分:154
注 册:2017-11-15
  得分:0 
回复 3楼 吹水佬
你好,请问下你的while(getchar()!='\n')  NULL;
这句的作用是什么,不能理解,希望能解答下,谢谢
还有,刚才我试了下你的代码,发现会运行出错,在输入字符时出错,
2018-01-04 00:15
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:157
帖 子:6128
专家分:26766
注 册:2014-5-20
  得分:0 
以下是引用丘山君在2018-1-4 00:15:37的发言:

你好,请问下你的while(getchar()!='\n')  NULL;
这句的作用是什么,不能理解,希望能解答下,谢谢
还有,刚才我试了下你的代码,发现会运行出错,在输入字符时出错,

用键盘输入数据时通常时以'\n'结束,但可能有除了需要接收的数据外,还有多余输入的数据和'\n'在输入流(缓冲)里面,这些不想要的多余数据有可能会带入到下一个输入数据的过程,造成接收到的数据是错误的。while(getchar()!='\n')语句就是用来清除这些多余的数据。

你“运行出错”,给个出错的输入输出示例看看。

2018-01-04 06:27
白山茶
Rank: 1
等 级:新手上路
帖 子:5
专家分:5
注 册:2018-1-3
  得分:0 
感谢各位大佬 已解决谢谢~~
2018-01-04 07:57
白山茶
Rank: 1
等 级:新手上路
帖 子:5
专家分:5
注 册:2018-1-3
  得分:0 
回复 2楼 丘山君
你好 问一下这个#include<stdlib.h> 是什么意思呀 不是很懂 我只知道 如果用数学函数 会加 #include<mah.h>
2018-01-04 07:59
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:367
帖 子:12742
专家分:49749
注 册:2012-10-18
  得分:4 
#include<stdlib.h> 这个是为了使用某个库函数而已
哪个头文件都是如此作用,如果你的代码中不使用库函数 则可以不引用任何头文件

DO IT YOURSELF !
2018-01-04 08:52
白山茶
Rank: 1
等 级:新手上路
帖 子:5
专家分:5
注 册:2018-1-3
  得分:0 
回复 8楼 wp231957
感谢大佬
2018-01-04 11:01
丘山君
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:87
专家分:154
注 册:2017-11-15
  得分:0 
回复 5楼 吹水佬
谢谢;
运行出错图在下面
我输入的n值为9,但字符只输入了6个就出错

附件: 您没有浏览附件的权限,请 登录注册
2018-01-04 14:39







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027082 second(s), 8 queries.
Copyright©2004-2018, BCCN.NET, All Rights Reserved