Question

Je viens de commencer à travailler avec C & Xcode et j'ai rencontré un peu de difficulté.

Tout ce que je veux faire est de lire un fichier à partir de la ligne de commande et voir la sortie du terminal. Je pense que mon problème réside dans le chemin vers le fichier que je veux lire. J'utilise un Mac et le fichier est sur mon bureau, de sorte que le chemin doit être Users/myName/Desktop/words.txt. Est-ce exact?

Ceci est mon 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
Était-ce utile?

La solution

Si vous avez besoin du chemin vers un fichier dans OS X, un moyen facile de le faire est de simplement faire glisser le fichier dans la fenêtre Terminal.app où vous tapez la commande. Le tour est joué!

Autres conseils

Le chemin vers le bureau est /Users/[username]/Desktop/

~/Desktop/ est une manière agnostique par l'utilisateur indiquant cela, ~ représente le répertoire courant de la maison des utilisateurs. Il doit être étendu en utilisant une méthode comme stringByExpandingTildeInPath

Je ne sais pas sur l'utilisation de C # (je ne l'ai jamais utilisé sous Mac OS X), mais en Objective-C / Cocoa, vous feriez ..

// 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);

Ceci est la façon la plus robuste d'obtenir le chemin de bureau, en tant qu'utilisateur pourrait techniquement déplacer leur dossier de bureau ailleurs où (bien que ce soit assez peu probable). Une autre option valable est d'utiliser la méthode NSString stringByExpandingTildeInPath:

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

Comme je l'ai dit, ceux sont en Objective-C, mais il ne devrait pas être difficile à traduire en C #, en supposant que vous pouvez obtenir dans les bibliothèques de cacao.


Le code affiché ne fonctionne correctement:

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

Le terminal augmente automatiquement le chemin de tilda ~/

Fermer ... il est

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

... où {} volume est le nom de votre disque dur. Vous pouvez également essayer d'utiliser:

~/Desktop/words.txt

... où ~, on entend « votre répertoire personnel », mais cela pourrait ne pas résoudre correctement.

(Note - cela semble être une question de C, pas une question C #)

En fait, vous pouvez faire:

/Users/myName/Desktop/words.txt

Vous ne devez pas donner le chemin du volume.

Cependant, pour obtenir le chemin complet en C vous feriez quelque chose comme:

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

home = getenv("HOME");

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

La question que vous utilisez en passant avec le nom du fichier comme argument est que vous devez définir le répertoire de travail courant à l'endroit où le fichier existe.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top