作者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