【发布时间】:2020-09-10 06:11:07
【问题描述】:
我正在尝试在 C 中使用 sscanf 解析 FEN。我有以下代码:
int main() {
char side, pos[128], castle[4], enpas[2];
int halfMove, fullMove;
const char fen[] = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1";
const int res = sscanf(fen, "%s %c %s %s %d %d", pos, &side, castle, enpas, &halfMove, &fullMove);
printf("%d\n", res);
printf("%s %c %s %s %d %d\n", pos, side, castle, enpas, halfMove, fullMove);
return 0;
}
当我运行此代码时,我得到以下预期结果:
6
rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
但是,当我将 FEN 字符串从 char 数组更改为 char 指针时,像这样
const char *fen = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1";
我得到以下结果:
6
w KQkq - 0 1
好像字符串的第一部分被忽略了。为什么会这样?我正在使用 GCC 10.1.0。
【问题讨论】: