webentwicklung-frage-antwort-db.com.de

Datei mit fopen öffnen, unter absolutem Pfad unter Windows

Ich versuche ein Programm zu erstellen, das die Anzahl der Zeilen einer Datei zählt, wenn ich versuche, den absoluten Pfad an die fopen-Funktion zu übergeben, sagt mir einfach, dass nicht gefunden wird, hier ist mein Code:

#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;
}

Wie muss ich den absoluten Pfad an mein Programm übergeben, damit Sie die Datei öffnen können?

13
franvergara66

Verwenden Sie doppelte Schrägstriche:

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

Es funktioniert nicht, da der Compiler einen Backslash in einer Literal-Zeichenfolge zusammen mit dem nächsten Zeichen untersucht und sie normalerweise als ein einziges Zeichen interpretiert. Solche Sequenzen mit zwei Zeichen in String-Literalen werden als Escape-Sequenzen bezeichnet.

Die Sequenzen \D und \j sind auf nichts abgebildet (im Gegensatz zu \n, das dem Zeilenumbruchzeichen zugeordnet ist). In diesem Fall sagt der Standard, dass der Compiler sie nach Belieben interpretieren kann. Einige Compiler ignorieren den Backslash, was in Ihrem Fall zu dem Äquivalent führen würde:

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

(Sie können versuchen, eine Datei mit diesem Namen zu erstellen, um zu testen, ob Ihr Compiler dies tut.).

Die richtige Escape-Sequenz für einen umgekehrten Schrägstrich ist ein doppelter umgekehrter Schrägstrich. Sie sollten ihn also als schreiben

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

funktioniert auch unter Windows und Linux: / anstelle von Backslashes \\

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

Überprüfen Sie die Leerzeichen im Dateinamen. Die Schrägstriche wurden ordnungsgemäß ausgeblendet, die Leerstelle jedoch nicht.

Versuchen:

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

1
Greg S

erstellen Sie einen neuen Ordner im Code-Block-Ordner 

erstellen Sie im Projektordner neben der Haupt- und Header-Datei eine neue Datei "exemple1" und legen Sie Ihre Datei "file.txt" in die Datei 

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