Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C项目赢得';我得不到纺织品_C_Fopen_Exc Bad Access_Scanf - Fatal编程技术网

C项目赢得';我得不到纺织品

C项目赢得';我得不到纺织品,c,fopen,exc-bad-access,scanf,C,Fopen,Exc Bad Access,Scanf,我只是想说清楚,我是C语言的初学者 当我的程序运行时(使用Xcode),没有任何值与“resultfortran.txt”中的值对应。相反,它们变得非常小、非常大或为零(看起来是随机的)。例如,变量n变为0,即使“resultfortran.txt”中的第一行是10。变量min和max也变得非常小(并且不获取第2行和第3行的值) 我整天都在网上搜索,还问我的同学们。如果感兴趣的话,我在打开文件的行中得到了错误“EXC_BAD_ACCESS”,但是这个错误(如何)消失了。是的,“resultfor

我只是想说清楚,我是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 ...
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
因为你是“C的初学者”,我想首先欢迎你,什么是一个非常严谨但有价值的语言。不过,公平地说,我不认为写操作系统代码的人在C.

是初学者。 我很乐意为您提供帮助,并在我们继续进行时更新此答案。我的第一个建议如下:

在执行文件操作(如打开文件)时,您始终应该做的第一件事是检查执行结果!例如,如果您在
fopen()
上阅读,您将看到
fopen()

返回文件指针。否则,将返回NULL,并将errno设置为 指出错误

因此,请使用类似于以下代码的代码来确保文件按预期打开:

if (fp == NULL) {
    printf("fopen did not work! Check errno %d\n", errno);
}
else {
    printf("fopen workd!\n");
}

一旦您回复我上述代码的实现结果,我将更新此答案。

您可以先检查
fopen()
float matrix[1000][1000]的返回值;
可能较大,以确保堆栈。更改为
static float matrix[1000][1000]
或通过
malloc
确保。比打印
errno
的值更有用的是使用
perror
strerror
获取人类可读的消息。建议的代码返回“fopen worked”,因此这似乎不是问题。变量n、min和max的值仍然为0(或非常小的数字)在fscanf之后。我现在发现了。问题是文件不在我拖动它的位置。因此,通过插入完整路径,文件被正确读取。感谢您花时间帮助我@8protons@mathia没问题。我很好奇,“您建议的代码返回”fopen worked“问题是文件不在我拖动它的位置。“我怀疑不正确的文件路径会返回错误号。