- 论坛徽章:
- 0
|
代码如下:
- //#define DEBUG
- #include <stdio.h>
- #include <string.h>
- struct account {
- char acc_name[15];
- int gift_giveout;
- int gift_receive;
- };
- int np; /* number of player */
- struct account np_acc[10];
- int main()
- {
- char name_tmp[15];
- int i, j;
- int giver_id;
- int receiver_id;
- int money;
- int n_give;
- printf("haha\n");
- freopen("./gift1.in", "r", stdin);
- printf("haha\n");
- freopen("./gift1.out", "w", stdout);
- printf("haha\n");
- scanf("%d", &np);
- for (i = 0; i < np; i++) {
- scanf("%s", np_acc[i].acc_name);
- np_acc[i].gift_giveout = 0;
- np_acc[i].gift_receive = 0;
- }
- for (i = 0; i < np; i++) {
- scanf("%s", name_tmp);
- scanf("%d%d", &money, &n_give);
- /* find out giver */
- giver_id = find_np(name_tmp);
- /* how much money the player will left */
- np_acc[giver_id].gift_giveout = \
- (int)(money / n_give) * n_give;
- /* money give to each receiver */
- money = (int)(money / n_give);
- for (j = 0; j < n_give; j++) {
- scanf("%s", name_tmp);
- receiver_id = find_np(name_tmp);
- np_acc[receiver_id].gift_receive += money;
- }
- }
- for (i = 0; i < np; i++) {
- printf("%s %d\n", np_acc[i].acc_name,
- np_acc[i].gift_receive - np_acc[i].gift_giveout);
- }
- fclose(stdin);
- fclose(stdout);
- return(0);
- }
- int find_np(char *name)
- {
- int i;
- for (i = 0; i < np; i++) {
- if (!strcmp(np_acc[i].acc_name, name))
- return i;
- }
- }
复制代码 注意freopen的那几行,第一个printf("haha\n"),可以出来,第二个也可以出来,但是当执行到 freopen("./gift1.out", "w", stdout);时,会抛出Floating point exception,然后程序就退出了。也就是说第三个haha没有出来,我检查了gift1.out文件,也是空的,没有任何内容。
几乎可以肯定是第二个freopen语句没有执行,但是为什么会出现这么奇怪的问题呢?求解! |
|