这让我发疯。我想从子目录 (./method/CoyoteAdapter.java.tk.method.514.5.533.5.bk) 读取,但我的代码在 fscan 时崩溃(总线错误):
void readFrag( int **sequence, int& nTokens, char* fragName )
{
FILE *file;
char tmp[200];
strncpy(tmp, &fragName[2], 198);
char szWorkingDirectory[PATH_MAX];
szWorkingDirectory[0] = '\0';
getwd(szWorkingDirectory);
printf("Attempting to open %s/%s\n", szWorkingDirectory, tmp);
file = fopen(tmp, "r");
nTokens = 0;
fscanf(file, "%d", &(*sequence)[nTokens]);
while(!feof (file))
{
fscanf(file, "%d", &(*sequence)[nTokens]);
++nTokens;
}
fclose(file);
}
// maxFragSizes: Each block has its max frag size
void init( int **seq, int& seqSize, int **sub, int& subSize, int **problemSizesPerBlock, char* fragListName )
{
FILE *file;
char line[200];
int* tokens = new int[THREADS_PER_BLOCK-1];
int nTokens = 0;
file = fopen(fragListName, "rt");
while(fgets(line, 200, file) != NULL)
{
readFrag( &(*seq), nTokens, line );
}
fclose(file);
}
但是,如果我将文件复制到我的目录,它就可以工作。我在 UNIX (Mac OS) 上。请帮忙!
编辑:我按照建议添加了以下代码。输出没问题,但还是不行...
最佳答案
您必须验证文件指针。可能找不到文件,或者您没有足够的权限来阅读它。
file = fopen(fragName, "rt");
if(file==NULL)
{
printf("\nFile not found");
return 0;
}
fscanf(file, "%d", &tmp);
关于c - 如何从子目录中读取C中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8752373/