使用fopen打开文件,在Windows上给定绝对路径

fra*_*a66 13 c++ windows fopen file relative-path

我正在尝试创建一个计算文件行数的程序,当我尝试将绝对路径传递给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;
}
Run Code Online (Sandbox Code Playgroud)

我应该如何将绝对路径传递给我的程序,以便打开文件?

Sin*_*all 20

使用双斜杠:

"C:\\Documents and Settings\\juegos psps.txt"
Run Code Online (Sandbox Code Playgroud)


Jon*_*Jon 6

它不起作用,因为编译器检查文字字符串中的反斜杠和下一个字符,并且通常将它们解释为一个字符.字符串文字中的这种两个字符序列称为转义序列.

这些序列\D\j没有映射到任何东西(将这与\n映射到换行符的对比),在这种情况下,标准说编译器可以按照它的选择来解释它们.有些编译器会选择忽略反斜杠,在您的情况下会产生相应的反斜杠:

archivo = fopen("C:Documents and Settingsjuegos psps.txt","r");
Run Code Online (Sandbox Code Playgroud)

(您可以尝试使用此名称创建一个文件来测试这是否是您的编译器所做的).

反斜杠的正确转义序列是双反斜杠,因此您应该将其写为

archivo = fopen("C:\\Documents and Settings\\juegos psps.txt","r");
Run Code Online (Sandbox Code Playgroud)