解题思路:
字符串本身数组也没多大差别,就一个 '\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分
1 人评分
## getchar 与 fflush 函数 **问题:** - 空格、回车或 TAB 键均认为是字符 - 输入,回车后,输入流:字符 + 换行符 getchar 从中获取一个字符,换行符会被残留在输入流中 - 再次调用 getchar 或 scanf 输入字符时,实际获取的是上次残留的换行符 \n,无法正确获取想要的字符 **解决:** - **方案一:**在每次调用 scanf 或 getchar 后,再调用一次 getchar 用于吸收上次输入缓冲区残留的换行符 - **方案二:**stdio.h 中的 fflush 函数清空输入缓存区 fflush(stdin); **注意:**方案二是非标准方式,可能会影响程序的可移植性
P1002 (C语言代码)浏览:1019 |
A+B for Input-Output Practice (C++代码)浏览:632 |
【亲和数】 (C语言代码)浏览:530 |
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:1071 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:781 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:633 |
用筛法求之N内的素数。 (C语言代码)浏览:890 |
C语言程序设计教程(第三版)课后习题11.1 (C语言代码)浏览:651 |
打印十字图 (C语言代码)浏览:2820 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:569 |