用FOPEN打开文件,因为在Windows上的绝对路径(Open file with fopen,

2019-06-26 06:27发布

我试图使计数文件的行数,当我尝试的绝对路径传递给fopen函数的程序,仅仅是告诉我,是找不到的,这里是我的代码:

#include <iostream>
#include <stdio.h>
#include <stdlib.h>

using namespace std;

int main(int argc, char *argv[])
{
    int i=0;
    char array[100];

        char caracteres[100];
        FILE *archivo;
        archivo = fopen("C:\Documents and Settings\juegos psps.txt","r");
        if (archivo == NULL){cout<<"Dont Work";}
        while (feof(archivo) == 0)
        {
                fgets(caracteres,100,archivo);
                i++;
                }
                cout << "Number of lines:" << i ;
                return 0;
}

我应该如何传递的绝对路径,以我的程序,所以你可以打开该文件?

Answer 1:

使用双斜线:

"C:\\Documents and Settings\\juegos psps.txt"


Answer 2:

它不工作,因为编译器检查与下一个字符文字串在一起反斜杠,通常会将它们解释为在所有一个字符。 在字符串这样的两个字符序列被称为转义序列

序列\D\j没有映射到任何东西(对比度这与\n映射到换行字符),在这种情况下,标准指出,编译器可以将其解释为它选择。 一些编译器选择忽略反斜杠,而你的情况会导致相当于:

archivo = fopen("C:Documents and Settingsjuegos psps.txt","r");

(你可以尝试创建一个文件,这个名字来测试,如果这是你的编译器做什么)。

反斜杠正确的转义序列是一个双反斜线,所以你应该把它写成

archivo = fopen("C:\\Documents and Settings\\juegos psps.txt","r");


Answer 3:

工程,以及在Windows和Linux: / ,而不是逃避反斜杠\\

"C:/dir1/dir2/file.ext"


Answer 4:

检查文件名中的空格。 斜线进行了适当逃过一劫,但空格不是。

尝试:

fopen("C:\\\\Documents\ and\ Settings\\\juegos psps.txt","r")



Answer 5:

创建一个新文件夹中的代码块的文件夹

在旁边的主头文件的项目文件夹中做出新的文件“exemple1”,并把你的文件,文件“file.txt”,然后

string nom_fichier;
nom_fichier = "exemple1/file.txt" ;
fichier = fopen(nom_fichier.c_str(), "r+");


Answer 6:

鉴于所有代码和路径键入正确,另一个可能的原因导致的fopen不工作可能是你的项目属性 - > C / C ++代码发生 - >运行时库设置为/ MD而非/ MDD的调试版本,此设置应对应项目配置,XX为Release XX(d)到调试



文章来源: Open file with fopen, given absolute path on Windows