我只是想说清楚--我是C语言的初学者。
当我的程序运行时(使用Xcode),没有与"resultfortran.txt“中的值相对应的值。相反,它们会变得非常小、非常大或为零(看起来是随机的)。例如,变量n变为0,即使"resultfortran.txt“中的第一行是10。变量min和max也变得非常小(并且不获取第2行和第3行的值)。
我一整天都在网上搜索,问我的同学们。如果感兴趣,我在打开文件的那一行得到了错误"EXC_BAD_ACCESS“,但是这个错误有(一些是如何发生的?)消失了。是的,"resultfortran.txt2和main.m在同一个文件夹中。
程序的开始如下所示:
#include <assert.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <GLUT/glut.h>
#include <OpenGL/OpenGL.h>
#include <Cocoa/Cocoa.h>
static void draw( void )
{
int n,i,j;
float step,min,max,x,y,scaled;
float matrix[1000][1000];
FILE *fp; //reads input file
fp=fopen("resultfortran.txt", "r");
fscanf(fp,"%d",&n); //Gives n the value of the first line.
step=(1.0/n); //Defines step size
fscanf(fp,"%f",&min); //Gives min the value of the second line.
fscanf(fp,"%f",&max); //Gives max the value of the third line.
for (i=0;i<n+1;i=i+1)
{
for (j=0;j<n+1;j=j+1)
{
fscanf(fp,"%f",&matrix[i][j]);
}
}
... not finished here ...文件"resultfortran.txt“(这是fortran脚本的输出)的第一行如下所示:
10
0.00000000
0.500000000
0.0000000000
0.0025000002
0.0100000007
0.0225000009
0.0400000028
0.0625000000
0.0900000036
0.1224999949
0.1600000113
0.2024999857
0.2500000000
0.0025000002
0.0050000008
0.0125000002发布于 2016-04-21 04:44:16
由于您是“C语言的初学者”,我想首先欢迎您学习这门非常严谨但有价值的语言。不过,说句公道话,我不认为写操作系统代码的人是C语言的“初学者”。
我很乐意为您提供帮助,并在我们进行的过程中更新此答案。我的第一个建议是:
在做文件操作(比如打开一个)时,你应该做的第一件事就是检查执行的结果!例如,如果您阅读fopen()上的man page,您将看到fopen()将
返回一个文件指针。否则,返回NULL,并设置errno以指示错误。
因此,使用与以下代码类似的代码来确保您的文件按预期打开:
if (fp == NULL) {
printf("fopen did not work! Check errno %d\n", errno);
}
else {
printf("fopen workd!\n");
}我将更新此答案,一旦您返回给我关于实现上述代码的结果。
https://stackoverflow.com/questions/36754042
复制相似问题