c - 如何从子目录中读取C中的文件

标签 c file unix

这让我发疯。我想从子目录 (./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/

相关文章:

c - VTK 结构化点文件

c - 文件记录排序的高效算法

java - 如何在 Unix 上获取 Java 中所有已安装文件系统的列表?

android - 如何将 Android Parcelable 数组保存到文件中?

php - 如何在javascript中显示多行文件内容

linux - Unix shell 脚本 : assign value from file to variable into while loop, 并在循环外使用这个值

c - 在一个 makefile 中制作两个 C 程序

main() 的参数可以无效吗?

使用 libexpect 通过 bash 自动连接 sshfs

c - 在 Linux 上使用 C 中的 INI 文件