我正在尝试创建一个计算文件行数的程序,当我尝试将绝对路径传递给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;
}
如何将绝对路径传递给我的程序以便打开文件?
答案 0 :(得分:17)
使用双斜杠:
"C:\\Documents and Settings\\juegos psps.txt"
答案 1 :(得分:6)
它不起作用,因为编译器会检查文字字符串中的反斜杠以及下一个字符,并且通常会将它们解释为一个字符。字符串文字中的这种两个字符序列称为转义序列。
序列\D
和\j
不映射到任何东西(与映射到换行符的\n
形成对比),在这种情况下,标准说编译器可以解释它们选择它们。有些编译器会选择忽略反斜杠,在您的情况下会产生等效的反斜杠:
archivo = fopen("C:Documents and Settingsjuegos psps.txt","r");
(您可以尝试创建一个具有此名称的文件来测试这是否是您的编译器所做的。)
反斜杠的正确转义序列是双反斜杠,因此您应将其写为
archivo = fopen("C:\\Documents and Settings\\juegos psps.txt","r");
答案 2 :(得分:3)
在Windows和Linux上运行良好:/
而不是转义反斜杠\\
"C:/dir1/dir2/file.ext"
答案 3 :(得分:1)
检查文件名中的空格。斜线被正确转义,但空白区域没有。
尝试:
fopen("C:\\\\Documents\ and\ Settings\\\juegos psps.txt","r")
答案 4 :(得分:0)
在代码块文件夹中创建一个新文件夹
在main和header文件旁边的项目文件夹中创建新文件“exemple1”并将文件放入“file.txt”,然后
string nom_fichier;
nom_fichier = "exemple1/file.txt" ;
fichier = fopen(nom_fichier.c_str(), "r+");
答案 5 :(得分:-1)
鉴于所有代码和路径都已正确输入,导致fopen无法工作的另一个可能原因可能是您的项目属性 - &gt; C / C ++代码生成 - &gt;运行时库设置为/ MD而不是/ MDd用于Debug构建,此设置应对应项目配置,XX到Release XX(d)到Debug