先附上代码 (tmp.cpp):
#include <cstdio>
using namespace std;
int main() {
int x = 0;
scanf("%d", &x);
char s = '\0';
if(x > 1) s = 's';
printf("Today, I ate %d apple%c.\n", x, s);
return 0;
}
如图所示, 在本地终端执行时 (肉眼看起来) 未显异常:

但提交后如图所示:

测试点 #1 的 io:
in: 1
out: Today, I ate 1 apple.
目前有两个疑问:
- 在格式化输出后, 字符串内的
'\0' 是否也算是一个字符会被读走? (是不是由于格式化输出的问题, 而非字符串本身的问题.)
- 是不是只有字符数组末尾的
\0 才会被当作真正的空字符处理? 若 \0 出现在字符数组内部, 会被当作单个字符, 那么最终 OJ 终端机的判定依据是跟随字符数组来的而非最终输出的 (肉眼可见) 的字符串?