由于出题的失误或者本地 Windows 的原因,导致行末有多余的空格或 '\r'
等,在使用 cin.getline
或者 fgets
和 getchar
等其他读入结合时可能出现读入错误。
void readline(char *s)
{
int c;
while (true)
{
c = getchar();
if (c == EOF || c == '\n')
break;
*s = c;
s++;
}
*s = 0;
}
int main()
{
char s[114];
int n;
cin >> n;
getchar(), getchar();
cin.getline(s, 114);
readline(s);
}
输入文件中添加 '\r'
进行测试。
出题人尽量不要在 Windows 造数据。如果一定要用 Windows,在使用 freopen
打开数据文件时,使用 "wb"
而不是 "w"
,以禁止 Windows 自动加 \r
。
选手如果要写自定义的读入函数 (特别是要放在代码模板里的话),最好能够考虑行末有多余空白字符的情况。