#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答案应该是“去”,但我总是得到“留下”。我使用了dbg,发现comet是'\000‘。我对fscanf不是很熟悉,所以在fscanf(fin,"%s%s",comet,group);中发生了什么
发布于 2013-11-30 21:10:19
comet和group的大小都是6,但是您的输入字符串是6个字符,这需要7个元素的数组才能正确存储(1表示终止的'\0')。因此,fscanf()会导致越界数组访问和未定义的行为。
https://stackoverflow.com/questions/20300563
复制相似问题