关于判定字符串时, '\0' 是否会被读取的问题.
查看原帖
关于判定字符串时, '\0' 是否会被读取的问题.
357327
丶天津风楼主2020/12/15 19:04

先附上代码 (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.


目前有两个疑问:

  1. 在格式化输出后, 字符串内的 '\0' 是否也算是一个字符会被读走? (是不是由于格式化输出的问题, 而非字符串本身的问题.)
  2. 是不是只有字符数组末尾的 \0 才会被当作真正的空字符处理? 若 \0 出现在字符数组内部, 会被当作单个字符, 那么最终 OJ 终端机的判定依据是跟随字符数组来的而非最终输出的 (肉眼可见) 的字符串?
2020/12/15 19:04
加载中...