一个文件输出问题,请求帮忙

skycncomp 2004-05-03 08:49:21
对不起,我分实在太少。实在报歉。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
int cnt=1;

//读入文本文件
void readData( int *A )
{
int i; //计数变量
FILE *fp;

if( (fp=fopen("in.txt", "r") )==NULL )
{
printf("\n*****不能打开文件*****\n");
getch();
exit(0);
}
for( i=0;i<200;i++ )
{
fscanf( fp,"%d ", &A[i] );
}

fclose( fp );
}

//输出文本文件
void Out_Data( int *A )
{
int i;
FILE *fp;

fp=fopen( "out.txt", "w" );
for( i=0;i<200;i++ )
fprintf( fp,"%d ", A[i] );

}

//排序输出
void Condi_Decide( int *A, int *B )
{
int i,k,node;
int temp;

B[0]=A[0];
for( i=1;i<200;i++ )
{
temp=A[i]%10;
if( (temp+1 )%2!=0 )
{
cnt++;
node=A[i];
k=i-1;

while( k>=0 && node>B[k] )
{
B[k+1]=B[k];
k--;
}
B[k+1]=node;
}
}
}

// 随机输出200个四位数
void Srand()
{
time_t t;
int i;
FILE *fp;

srand( (unsigned) time(&t) );

if( (fp=fopen("in.txt","w" ) )==NULL )
{
printf("\nCon't open file.");
getch();
exit(0);
}
for( i=0;i<200;i++ )
{
fprintf( fp, "%d ", rand()%10000 );
}
}

void main()
{
int A[200];
int B[200]={0};
int i;

// Srand(); //如果加上这句就出现错误。
readData( A );
for( i=0;i<200;i++ )
{
printf("%d ", A[i] );
if( i%10==0 )
printf("\n");
}

Condi_Decide( A,B );

Out_Data( B );
printf("\n满足条件的总数共=%d.\n", cnt );
}



我想输出数字到文件中,满足条件尾数是0,2,4,6,8 .但现在我如果我先建好读入文件运行就正确。
如果我运行的时候建立文件是不正确。请问这是怎么回事。我如何来达到我随机建立的要求.
...全文
14 5 点赞 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
mypromise 2004-05-03
在Srand()里面最后一行写上fclose(fp)就行了,没有关闭文件的话文件是不会写成功的。
  • 打赏
  • 举报
回复
cngdzhang 2004-05-03
在void Srand()中

你忘了把
FILE *fp;关闭了

在后面加上
fclose(fp);

你还没关闭写文件就打开文件读,当然不行



  • 打赏
  • 举报
回复
skycncomp 2004-05-03
两位说的办法都不正确的。还是行不通。
输出和原来是一样的,全部为同一个负数。
  • 打赏
  • 举报
回复
Cathryn0000000 2004-05-03
将Srand()里的fp=fopen("in.txt","w" ) )==NULL
改为fp=fopen("in.txt","w+" ) )==NULL 就可以了
你用的只能打开一个已存在的文件,w+参数说明为若文件存在,打开;若不存在,创建并打开
  • 打赏
  • 举报
回复
freefalcon 2004-05-03
srand( (unsigned) time(&t) );改为
srand( (unsigned) time(NULL) );试试
  • 打赏
  • 举报
回复
相关推荐
发帖
C语言
加入

6.5w+

社区成员

C语言相关问题讨论
申请成为版主
帖子事件
创建了帖子
2004-05-03 08:49
社区公告
暂无公告