Открыть файл с помощью 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 Settingsjuegos 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;
}
Как передать абсолютный путь к моей программе, чтобы вы могли открыть файл?
6 ответов
он не работает, потому что компилятор проверяет обратную косую черту в литеральной строке вместе со следующим символом и обычно интерпретирует их как один символ во всех. Такие последовательности двух символов в строковых литералах называются escape-последовательности.
последовательности \D
и \j
не карту ничего (сравните с \n
, который соответствует символу новой строки), и в этом случае в стандарте сказано, что компилятор может интерпретировать их по своему усмотрению. Некоторые компиляторы предпочитают игнорировать обратную косую черту, что в вашем случае приведет к эквивалентному:
archivo = fopen("C:Documents and Settingsjuegos psps.txt","r");
(вы можете попробовать создать файл с этим именем, чтобы проверить, делает ли это ваш компилятор).
правильной escape-последовательностью для обратной косой черты является двойная обратная косая черта, поэтому вы должны написать ее как
archivo = fopen("C:\Documents and Settings\juegos psps.txt","r");
работает также на windows и linux:/
вместо того, чтобы избежать обратных косых черт \
"C:/dir1/dir2/file.ext"
Проверьте пробелы в имени файла. Порезы были правильно нанесены, но пустого места не было.
попробуй:
fopen("C:\\Documents\ and\ Settings\\juegos psps.txt","r")
создать новую папку в папке блоков кода
в папке проекта рядом с файлом main и header создайте новый файл " exemple1 "и поместите в него свой файл" file.txt", то
string nom_fichier;
nom_fichier = "exemple1/file.txt" ;
fichier = fopen(nom_fichier.c_str(), "r+");
учитывая, что все коды и пути правильно набраны, другой возможной причиной, по которой fopen не работает, могут быть ваши свойства проекта - > генерация кода C / C++->библиотека времени выполнения, установленная в /MD, а не /MDd для сборки отладки, этот параметр должен соответствовать конфигурации проекта, XX для выпуска XX (d) для отладки