#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);
}
ride.in:
COMETQ
HVNGAT
答案应该是“GO”,但我总是“保持”。
我用dbg发现comet [0]是'\ 000'。
我对fscanf不是很熟悉,所以fscanf(fin,"%s%s",comet,group);
发生了什么?
答案 0 :(得分:0)
comet
和group
的大小均为6,但您的输入字符串长度为6个字符,这需要7个元素的数组才能正确存储(1个用于终止'\0'
)。因此,fscanf()
导致越界数组访问和未定义行为。