作者Isuzel (Isuzel)
看板NSYSU-CSE97
標題Re: [作業] 計概作業8-rand,排序,輸入輸出
時間Wed Dec 8 20:28:01 2004
My program...(mifan看到大概會罵我...orz)
目前有詭異的問題。
雖然結果正常,但是程式執行到最後會跑出 Null pointer assignment
以F8 Step by step 執行的結果,發現......................
是在return 0;之後才跑出來...~"~
百思不得其解中。
---------------------------------------------
/* B933040003_hw08.c */
#include<stdio.h>
#include<stdlib.h>
#include "inssort.c"
int main(void)
{
FILE *fip;
int num, flag;
int *tmp;
randomize();
do
{
printf("\nPlease enter the number of the ints:");
scanf("%d", &num);
}while(num <= 0);
if((fip = fopen("INPUT.TXT", "w+")) == NULL)
{
printf("Open file error.");
return 0;
}
for(flag = 1;flag <= num;flag++)
fprintf(fip, "%d\n", rand());
fclose(fip);
insertion_sort(num, fip);
return 0;
}
-------------------------------------------
/* inssort.c */
#include<stdio.h>
int insertion_sort(int datan, FILE *fp)
{
int i, j, k;
int *data;
FILE *fop;
if((fp = fopen("INPUT.TXT", "r")) == NULL || (fop = fopen("OUTPUT.TXT", "w+")) == NULL)
{
printf("Open file error.");
return 0;
}
printf("The origin data is:");
for(i=1;i<=datan;i++)
{
fscanf(fp,"%d", &data[i]);
printf("%d ", data[i]);
}
fclose(fp);
for(i=2;i<=datan;i++)
{
data[0] = data[i];
j = i-1;
while(j>=1 && data[0]>data[j])
{
data[j+1] = data[j];
j--;
}
data[j+1] = data[0];
printf("\nThe datas after this pass is:");
for(k=1;k<=datan;k++)
printf("%d ", data[k]);
}
printf("\nThe datas after sorting:\n");
for(i=1; i<=datan; i++)
printf("%d ",data[i]);
for(i=1;i<=datan;i++)
fprintf(fop, "%d\n", data[i]);
fclose(fop);
return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.117.186.150