最近做到一道题目,需要输入三行数据,第一行第三行为两个整型数字,第二行为一个字符串。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
#include <stdbool.h>
#include<string.h>
int main(void)
{
int i, j, n,k;
scanf("%d",&n);/*第一次输入*/
getchar();/*清理回车键*/
char s[10000000],ch;
gets(s);
scanf("%d", &k);
for (i = 0, j = k - 1;i < j;i++, j--)
{
ch = s[i];
s[i] = s[j];
s[j] = ch;
}
for(i=k,j=n-1;i<j;i++,j--)
{
ch = s[i];
s[i] = s[j];
s[j] = ch;
}
puts(s);
return 0;
}
上图中如果没有getchar()会导致运行答案错误
原因在于getchar()能够读取空格和回车键('\n')
即输入时换行符会影响第二行字符串的读取,因此需要在其中加入一个getchar()清理掉输入的回车键。