在 Xcode 中读取 C 文件时出错
Error reading file in C in Xcode
我试图在 Xcode IDE 中读取 C 文件,但每次运行代码时它都会卡在特定行并发出 Thread 1 : EXC_BAD_ACCESS(代码 = 1,地址 = 0x68) 错误。代码如下
// Libraries to be included
# include <stdio.h>
# include <stdlib.h>
# include <time.h>
# include <string.h>
# include <math.h>
// Main function or entry point
int main(int argc, char * argv[])
{
FILE * fp = fopen("~/Desktop/Primitivity/sample","r");
int nCoeff, nFactors,answer, degree, i, temp;
int check = 0;
int * polynomial, *factors;
// Error coming here
check = fscanf(fp, "%d", &nCoeff);
}
最后一行提示错误。我认为 Xcode 无法找到该文件。我试过绝对地址和相对地址。文件名为 sample(无扩展名)。
它出现在最后一行,因为 fp
是 NULL
。尝试在代码中添加一些错误检查,例如检查 fp
是否为 NULL
并打印 errno
的值,如果是则退出程序。有关详细信息,请参阅 fopen(3)
和 errno(3)
手册页。
(另外,扩展“~”的是shell,不是系统调用。)
需要修正2点
- 在 fopen 中提供文件的完整路径。您需要展开“~”。
- fopen 不会理解“~”。它将尝试在以“~”开头的绝对路径中查找文件。
对 fp 进行空检查。这将帮助您检测打开文件时出现的任何问题。也可能是文件权限问题。
请参阅下面更正后的代码。
FILE * fp = fopen("/Users/abc/Desktop/sample","r");
if(!fp)
{
NSLog(@"Failed to open file");
return;
}
int nCoeff, nFactors,answer, degree, i, temp;
int check = 0;
int * polynomial, *factors;
check = fscanf(fp, "%d", &nCoeff);
我试图在 Xcode IDE 中读取 C 文件,但每次运行代码时它都会卡在特定行并发出 Thread 1 : EXC_BAD_ACCESS(代码 = 1,地址 = 0x68) 错误。代码如下
// Libraries to be included
# include <stdio.h>
# include <stdlib.h>
# include <time.h>
# include <string.h>
# include <math.h>
// Main function or entry point
int main(int argc, char * argv[])
{
FILE * fp = fopen("~/Desktop/Primitivity/sample","r");
int nCoeff, nFactors,answer, degree, i, temp;
int check = 0;
int * polynomial, *factors;
// Error coming here
check = fscanf(fp, "%d", &nCoeff);
}
最后一行提示错误。我认为 Xcode 无法找到该文件。我试过绝对地址和相对地址。文件名为 sample(无扩展名)。
它出现在最后一行,因为 fp
是 NULL
。尝试在代码中添加一些错误检查,例如检查 fp
是否为 NULL
并打印 errno
的值,如果是则退出程序。有关详细信息,请参阅 fopen(3)
和 errno(3)
手册页。
(另外,扩展“~”的是shell,不是系统调用。)
需要修正2点
- 在 fopen 中提供文件的完整路径。您需要展开“~”。
- fopen 不会理解“~”。它将尝试在以“~”开头的绝对路径中查找文件。 对 fp 进行空检查。这将帮助您检测打开文件时出现的任何问题。也可能是文件权限问题。
请参阅下面更正后的代码。
FILE * fp = fopen("/Users/abc/Desktop/sample","r");
if(!fp)
{
NSLog(@"Failed to open file");
return;
}
int nCoeff, nFactors,answer, degree, i, temp;
int check = 0;
int * polynomial, *factors;
check = fscanf(fp, "%d", &nCoeff);