解题思路:

    字符串本身数组也没多大差别,就一个 '\0'
    先输入字符串的个数,清除缓冲区,通过 for 循环输出数组,输出从第几位开始输出
注意事项:
    VScode 的输出与 Dotcpp 的输出有所不同,其中原理不甚了解
参考代码:

    个人觉得应该为这份

```c

void rest() {

        char a[100];

        int m;

        int n;

        scanf("%d", &n);

        fflush(stdin);

        for (int i = 0; i < n; i++)

            scanf("%c", &a[i]);

        scanf("%d", &m);

        for (int i = m - 1; i < n; i++)

            printf("%c", a[i]);

}

int main() {

    rest();

}

但是,实际是这个通过了,而且Dotcpp 编译器 与 VScode 编译器下的结果不同

void rest1() {

        char a[100];

        int m;

        int n;

        scanf("%d", &n);

        fflush(stdin);

        for (int i = 0; i <= n; i++) {

            scanf("%c", &a[i]);

        }

        scanf("%d", &m);

        for (int i = m; i <= n; i++)

            printf("%c", a[i]);

}

int main() {

    rest1();

}

```

点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 1 条评论

逆風祈雨 3年前 回复TA
## getchar 与 fflush 函数

**问题:**

- 空格、回车或 TAB 键均认为是字符

- 输入,回车后,输入流:字符 + 换行符

  ​	getchar 从中获取一个字符,换行符会被残留在输入流中

- 再次调用 getchar 或 scanf 输入字符时,实际获取的是上次残留的换行符 \n,无法正确获取想要的字符	

**解决:**

- **方案一:**在每次调用 scanf 或 getchar 后,再调用一次 getchar 用于吸收上次输入缓冲区残留的换行符

- **方案二:**stdio.h 中的 fflush 函数清空输入缓存区 fflush(stdin);

  **注意:**方案二是非标准方式,可能会影响程序的可移植性