|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
代码想实现功能:整个代码块会在别的程序中被执行若干次,每次会在double文件中读入数据到a,b,c三个数组中,然后每次运行该代码会按顺序打印数组中的一组数据,文件中数据行数定义为size,当数组数据全打印后,再从a[0],b[0],c[0]开始打印,这里用手动运行代替程序执行代码
出现错误:运行时a[j],b[j],c[j]无内容,并且j.txt文件内容被清空
文件代码如下
- #include <stdio.h>
- int main()
- {
- double a[100];
- double b[100];
- double c[100];
- int i=0;
- int j;
- int size;
-
- FILE *fp;
- FILE *fq;
-
- if((fp=fopen("D:\\OPNET14.5\\test\\double.txt","r")) == NULL)
- {
- puts("Can not open double.txt file!");
- }
- else
- {
- do
- {
- fscanf(fp,"%lf ",&a[i]);
- fscanf(fp,"%lf ",&b[i]);
- fscanf(fp,"%lf\n",&c[i]);
- printf("%lf %lf %lf\n",a[i],b[i],c[i]);
- i++;
- }
- while(!feof(fp));
- size=i;
- }
- fclose(fp);
- if((fq=fopen("D:\\OPNET14.5\\test\\j.txt","w+")) == NULL)
- {
- puts("Can not open j.txt file!");
- }
- else
- {
- fscanf(fq,"%d",&j);
- }
- printf("%lf %lf %lf\n",a[j],b[j],c[j]);
-
- if(j < size-1)
- {
- j++;
- /* write down the value of j into the file */
- fprintf(fq,"%d",j);
- }
- else
- {
- j=0;
- /* write down the value of j into the file */
- fprintf(fq,"%d",j);
- }
- fclose(fq);
- return 0;
- }
复制代码
double.txt文件内容如下
1.000000e+000 2.000000e+000 -3.000000e+000
2.000000e+000 3.000000e+000 -2.000000e+000
3.000000e+000 4.000000e+000 -1.000000e+000
4.000000e+000 5.000000e+000 0.000000e+000
5.000000e+000 6.000000e+000 1.000000e+000
6.000000e+000 7.000000e+000 2.000000e+000
7.000000e+000 8.000000e+000 3.000000e+000
8.000000e+000 9.000000e+000 4.000000e+000
9.000000e+000 1.000000e+001 5.000000e+000
1.000000e+001 1.100000e+001 6.000000e+000
6.000000e+000 7.000000e+000 2.000000e+000
7.000000e+000 8.000000e+000 3.000000e+000
8.000000e+000 9.000000e+000 4.000000e+000
9.000000e+000 1.000000e+001 5.000000e+000
1.000000e+001 1.100000e+001 6.000000e+000
j.txt文件内容如下
0
兄弟, 我刚刚试了你的程序,基本都没问题,最主要的问题就是你打开 j.txt 文件的方式有问题 w+ 的打开方式说明如下:
1. 以读和写的模式打开一个文本文件,从文件头开始读取和写入
2. 如果文件不存在则创建一个新的文件
3. 如果文件已存在则将文件的长度截断为 0(重新写入的内容将覆盖原有的所有内容)
你文件不存在创建新文件,文件存在,则会将长度截断为0,所以你以 w+ 打开文件的时候,文件里面永远是没内容的状态,当你用 r+ 模式打开 j.txt 的时候就没问题了
|
-
|