Frage

Ich habe gerade angefangen die Arbeit mit C & Xcode und ich habe in eine wenig Schwierigkeiten führen.

Alles, was ich tun möchte, ist eine Datei von der Kommandozeile lesen und die Ausgabe im Terminal sehen. Ich glaube, mein Problem mit dem Pfad liegt in die Datei, die ich in lesen. Ich bin mit einem Mac und die Datei auf meinem Desktop, so sollte der Pfad Users/myName/Desktop/words.txt werden. Ist das richtig?

Dies ist mein Code:

#import <Foundation/Foundation.h>

int main (int argc, const char* argv[]){

    if(argc == 1){
        NSLog(@" you must pass at least one arguement");
        return 1;
    }
    NSLog(@"russ");
    FILE*  wordFile = fopen(argv[1] , "r");
    char word[100];

    while (fgets(word,100,wordFile)) {

        NSLog(@" %s is %d chars long", word,strlen(word));

    }

    fclose(wordFile);
    return 0;

}//main
War es hilfreich?

Lösung

Wenn Sie den Pfad zu einer Datei in OS X benötigen, eine einfache Möglichkeit, es zu bekommen, ist die Datei in das Terminal.app Fenster nur zu ziehen, wenn Sie den Befehl eingeben. Voila!

Andere Tipps

Der Pfad zum Desktop ist /Users/[username]/Desktop/

~/Desktop/ ist eine benutzerunabhängige Möglichkeit, dies zu bezeichnen, ~ das aktuelle Benutzer Home-Verzeichnis darstellt. Es muss eine Methode wie stringByExpandingTildeInPath

Nicht sicher C # zu verwenden (ich habe es nie auf Mac OS X verwendet wird), aber in Objective-C / Cocoa, würden Sie tun ..

// Get array with first index being path to desktop
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDesktopDirectory, NSUserDomainMask, YES);

// Get the first element
NSString *desktopPath = [paths objectAtIndex:0];

// Append words.txt to path
NSString *theFilePath = [desktopPath stringByAppendingPathComponent:@"words.txt"];

NSLog(@"%@", theFilePath);

Dies ist die robusteste Möglichkeit, den Desktop-Pfad zu bekommen, als ein Benutzer technisch ihren Desktop-Ordner sonst wo bewegen konnte (obwohl dies ziemlich unwahrscheinlich ist). Eine weitere gültige Option ist die NSString Methode stringByExpandingTildeInPath zu verwenden:

NSString *desktop = [@"~/Desktop" stringByExpandingTildeInPath];
NSString *theFile = [desktop stringByAppendingPathComponent:@"words.txt"]

Wie gesagt, beide sind diejenigen, in Objective-C, aber es sollte nicht schwer zu C # zu übersetzen, Sie unter der Annahme an den Cocoa-Bibliotheken erhalten können.


Der Code, den Sie Arbeiten korrekt geschrieben:

dbr:.../build/Debug $ ./yourcode ~/Desktop/words.txt 
yourcode[2106:903] russ
yourcode[2106:903]  this is words.txt is 17 chars long

Ihr Terminal erweitert automatisch den ~/ tilda Pfad

schließen ... es ist

/{Volume}/Users/myName/Desktop/words.txt

... where {Volume} der Name Ihrer Festplatte. Sie können auch versuchen, mit:

~/Desktop/words.txt

... wo ~ ist zu verstehen, „Ihr Home-Verzeichnis“, aber dieses Problem zu beheben möglicherweise nicht korrekt.

(Hinweis - dies scheint eine C Frage zu sein, nicht eine C # Frage)

Eigentlich kann man tun:

/Users/myName/Desktop/words.txt

Sie müssen den Pfad geben Sie nicht auf das Volumen.

Um jedoch den vollständigen Pfad in C bekommen Sie etwas tun würden, wie:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
char *home, *fullPath;

home = getenv("HOME");

fullPath = strcat(home, "/Desktop/words.txt");

Das Problem Sie laufen in mit den Dateinamen als Argument übergeben ist, dass Sie das aktuelle Arbeitsverzeichnis zu dem Ort, an dem die Datei vorhanden ist festlegen müssen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top