C语言中读写文件的一个问题

#include<stdio.h>#include<math.h>#include<string.h>#include<stdlib.h>voidmain(){intn,... #include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
void main()
{

int n,a[n],ii;
float b[n];
n=16;
printf("HI\n");
FILE *infp1;
FILE *outfp1;

if((infp1 = fopen("node.txt","r")) == NULL)
{
fprintf(stderr,"Cannot open output file %s\n","node.txt");
exit(-1);
}
if((outfp1 = fopen("result1","w")) == NULL)
{
fprintf(stderr,"Cannot open output file %s\n","result1");
exit(-1);
}
for(ii=0;ii<n;ii++)
{
fscanf(infp1,"%d,%e",&a[ii],&b[ii]);
printf("a[%d]=%d b[%d]=%e\n",ii,a[ii],ii,b[ii]);
fprintf(outfp1,"a[%d]=%d b[%d]=%e\n",ii,a[ii],ii,b[ii]);
}

system("pause");
}
读的文件是这样的:
1,-0.3850E+05
2,-0.5079E+06
3,-0.3855E+05
4,-0.2910E-09
5,-0.1528E-09
6, 0.1091E-10
7, 0.5821E-10
8, 0.5821E-10
9, 0.9095E-10
10, 0.1819E-10
11, 0.2001E-09
12, 0.1528E-09
13,-0.1710E-09
14,-0.5093E-10
15, 0.1819E-10
16,-0.2547E-10
诡异的结果是:读到i=15时,程序就说出现错误不读了,所以结果只能显示到a[14]=15 b[14]=1.819000e-011,下面的a[15]就显示不了了.
如果把读的文件加到17组数,同时n=17,同样是i=15的时候程序就停止.
如果没有FOR循环,一上来就让a[15],b[15]读文件中的第一个数,同样还是显示不了.到底什么原因等于15的时候程序就出现错误呢???
展开
 我来答
匿名用户
推荐于2016-04-16
展开全部
int n,a[n],ii;
float b[n];
n=16;

C中不允许这样定义数组,修改如下:

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#define N 16
void main()
{

int a[N],ii;
float b[N];
FILE *infp1;
FILE *outfp1;
printf("HI\n");

if((infp1 = fopen("E:\\node.txt","r")) == NULL)
{
fprintf(stderr,"Cannot open output file %s\n","node.txt");
exit(-1);
}
if((outfp1 = fopen("E:\\result1","w")) == NULL)
{
fprintf(stderr,"Cannot open output file %s\n","result1");
exit(-1);
}
for(ii=0;ii<N;ii++)
{
fscanf(infp1,"%d,%e",&a[ii],&b[ii]);
printf("a[%d]=%d b[%d]=%e\n",ii,a[ii],ii,b[ii]);
fprintf(outfp1,"a[%d]=%d b[%d]=%e\n",ii,a[ii],ii,b[ii]);
}

system("pause");
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式