yuec 发表于 2020-4-5 16:42:24

请问怎么能使输入的时候输回车键不计入字符串中呢?

题目:有一字符串,包含n个字符。写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。
输入
数字n 一行字符串 数字m
输出
从m开始的子串
样例输入
6
abcdef
3
样例输出
cdef


我的答案:
#include <stdio.h>
int main()
{
        int n,m,i;
        int j=0;
        scanf("%d",&n);
        char a,b,string;
        gets(a);
        scanf("%d",&m);
        for(i=m-1;i<n;i++){
        b = a;
        j++;
        }
        puts(b);
}

请问怎么能使输入的时候输回车键不计入字符串中呢?

yuec 发表于 2020-4-5 17:01:24

我运行时如果像样例那样输入,就运行错误
如果输入6之后不输回车直接输abcdef,这样就正确,所以第一种方法是不是把回车计入了输入的字符串中呢?这种情况怎么避免呢?
求大神解答,不胜感激!

BngThea 发表于 2020-4-5 17:05:43

用getchar函数,一个字符一个字符的读取输入,然后加一个判断——如果是回车符直接跳过

yuec 发表于 2020-4-5 17:09:59

BngThea 发表于 2020-4-5 17:05
用getchar函数,一个字符一个字符的读取输入,然后加一个判断——如果是回车符直接跳过

请问加判断的代码怎么写呢?感谢!

BngThea 发表于 2020-4-5 17:15:51

yuec 发表于 2020-4-5 17:09
请问加判断的代码怎么写呢?感谢!

ch=getchar();
if(ch=='\n')
//执行对应的操作

yuec 发表于 2020-4-5 17:38:01

BngThea 发表于 2020-4-5 17:15
ch=getchar();
if(ch=='\n')
//执行对应的操作

我改成这样还是不行:
#include <stdio.h>
int main()
{
        int n,m,i;
        int j=0;
        scanf("%d",&n);
        char a,b,ch;
        for(i=0;i<n;i++)
        ch = getchar();       
        if(ch=='\n'){
        scanf("%d",&m);
        for(i=m-1;i<n;i++){
        b = a;
        j++;
        }
        puts(b);
        }
}
请问你知道哪错了吗?感谢!

BngThea 发表于 2020-4-5 17:42:46

yuec 发表于 2020-4-5 17:38
我改成这样还是不行:
#include
int main()


你要用循环去读取每一个字符,然后存放到a中,形如:
while(ch=getchar())
{
    a=ch;
    if (ch=='\n'){}
}
页: [1]
查看完整版本: 请问怎么能使输入的时候输回车键不计入字符串中呢?