Подтвердить что ты не робот

Открыть файл с fopen, заданный абсолютный путь в Windows

Я пытаюсь сделать программу, которая подсчитывает количество строк файла, когда я пытаюсь передать абсолютный путь к функции 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;
}

Как передать абсолютный путь моей программе, чтобы открыть файл?

4b9b3361

Ответ 1

Используйте двойные слэши:

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

Ответ 2

Он не работает, потому что компилятор проверяет обратную косую черту в литеральной строке вместе со следующим символом и обычно интерпретирует их как один символ во всех. Такие две последовательности char в строковых литералах называются escape-последовательностями.

Последовательности \D и \j не сопоставляются ни с чем (сравните это с \n, который сопоставляется символу новой строки), и в этом случае стандарт говорит, что компилятор может интерпретировать их по своему усмотрению. Некоторые компиляторы предпочитают игнорировать обратную косую черту, которая в вашем случае приведет к эквиваленту:

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

(Вы можете попробовать создать файл с этим именем, чтобы проверить, является ли это то, что делает ваш компилятор).

Правильная escape-последовательность для обратной косой черты - двойная обратная косая черта, поэтому вы должны написать ее как

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

Ответ 3

работает также на windows и linux: / вместо того, чтобы сбрасывать обратную косую черту \\

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

Ответ 4

Проверьте пробелы в имени файла. Сляки были правильно экранированы, но пустое пространство не было.

Try:

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

Ответ 5

Учитывая, что все коды и пути правильно введены, другая возможная причина, из-за которой функция fopen не работает, может быть вашей Project Properties- > C/С++ Code Generation- > Runtime Library, установленной в /MD, а не /MDd для сборки Debug, эта настройка должна соответствовать конфигурации проекта, XX - Release XX (d) - Debug