gpt4 book ai didi

c - fscanf ("%s%s", cometd ,组);

转载 作者:行者123 更新时间:2023-11-30 17:43:07 25 4
gpt4 key购买 nike

#include <stdio.h>
#include <stdlib.h>

int main(){
FILE *fin = fopen ("ride.in", "r");
FILE *fout = fopen ("ride.out", "w");

char group[6], comet[6];
fscanf(fin, "%s%s", comet, group);

int i = 0, n = 1, m = 1;
while(group[i])
n *= (group[i++] - 'A' + 1);

i = 0;
while(comet[i])
m *= (comet[i++] - 'A' + 1);

fprintf(fout, "%s\n", (n % 47 == m % 47)? "GO" : "STAY");

exit (0);
}

乘车:

COMETQ
HVNGAT

答案应该是“走”,但我总是得到“留下”。我使用dbg发现comet[0]是'\000'。我对 fscanf 不太熟悉,那么 fscanf(fin,"%s%s",comet,group); 发生了什么?

最佳答案

cometgroup 的大小都是 6,但您的输入字符串是 6 个字符长,这需要 7 个元素的数组才能正确存储(1 表示终止 '\0')。因此,fscanf() 会导致越界数组访问和未定义的行为

关于c - fscanf ("%s%s", cometd ,组);,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20300563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com