在c中打开一个位于不同位置的文件

时间:2016-01-26 08:23:22

标签: c fopen

In [112]: df['LastPrice'].convert_objects(convert_numeric=True)
Out[112]:
0    1
1    2
2    3
Name: LastPrice, dtype: float64

}

所以,我必须使用c fopen命令打开此文件,但我必须指定文件实际位于哪个位置。例如,上面的file.txt不在程序正在执行的位置,但它位于不同的位置,例如上面的file.txt位于/ home / my_user_name和程序正在执行的位置是/ home / my_user / anyfolder。 所以我想知道如何在程序中指定文件的位置。 在此先感谢

5 个答案:

答案 0 :(得分:4)

您只需指定路径.....

fopen("/path/to/file.txt", "r")

答案 1 :(得分:1)

FILE *fh = fopen("../file.txt", "r");

如果您不知道如何指定路径 你也可以这样做:

char path[] = "../";  // or "/home/my_user_name/"
char file[] = "file.txt";
char full[256];

snprintf(full, sizeof(full), "%s%s", path, file);
FILE *fh = fopen(full, "r");

但请勿忘记错误处理。

编辑:错误检查:

#include <unistd.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>

int main() {
    int c;
    char path[] = "../";   // or "/home/my_user_name/"
    char file[] = "file.txt";
    char full[256];

    snprintf(full, sizeof(full), "%s%s", path, file);

    FILE *fh = fopen(full, "r");

    if (fh != NULL) {
        while ((c = fgetc(fh)) != EOF) {
            printf("%c", c);
        }
        fclose(fh);
    } else {
        printf("could not open file");
    }
    return 0;
}

答案 2 :(得分:1)

您可以使用/home/my_user_name/file.txt作为参数而不是file.txt:

FILE *fh = fopen("/home/my_user_name/file.txt", "r");

或者您可以使用相对路径(我不建议这样做,因为这会要求您的程序在某个位置才能正常运行):

FILE *fh = fopen("../file.txt", "r");

答案 3 :(得分:1)

只需输入路径名称:fopen("/path/to/file.txt", "r")

如果要检查错误,只需检查返回值。像这样:

FILE *fh = fopen("/path/to/file.txt", "r");

if (fh == NULL) {
    // print error
    // exit program if you want to.
}

您可以使用exit功能退出程序。在这种情况下,您希望因错误而退出,exit (1);

也是如此

答案 4 :(得分:0)

这就是你如何检查文件是否成功打开。

FILE * pFile;

pFile = fopen ("test.txt","r");
if (pFile!=NULL)    //check if file was opened successfully
{
    //do stuff
}
return 0;