2016-05-12 4 views
0

私はVisual Studio 2015を使用してファイルをパスから取得するために、Cでアプリケーションを作成しています。私はVisual StudioのCで現在のパスを変更できません

私はアプリケーションを実行し、コマンド:list pathを書き込むことをお勧めします。

アプリケーションは、そのパスに移動し、そこからすべてのファイルを表示する必要があります。すべては問題ありませんが、プロジェクトフォルダにあるテキストファイルにファイルを保存する必要があります。

私の問題は、私がプロジェクトのパスにコマンドで書いたパスから戻ることができないということです。

たとえば、私はC:\\Visual Studio\\projects\\applicationにプロジェクトを持っていますが、ここにテキストファイルを作成したいのですが、コンソールのパスでキーボードから書き込むときには、例えばlist C:\\MinGWStudioというテキストファイルが作成されます。

コード:

printf("Comanda a fost executata cu succes!\n"); 
SetCurrentDirectory(argv[0]); 
FILE *outFile; 
outFile = fopen("list.txt", "w+"); 
printf("%s\n", lista->cale); 
fprintf(outFile, "%s\n", lista->cale); 
+1

'argv [0]'を確認してください。明らかにあなたが考えるものではありません。 'fopen()'の戻り値を常にチェックすると、ターゲットディレクトリにアクセス権がない可能性があり、失敗することがあります。 –

+0

デバッガを使用します。 – alk

+0

可能な複製[char \ * argv \ [\]は何を意味するのですか?](http://stackoverflow.com/questions/16666353/what-does-char-argv-means) –

答えて

0

どうやらあなたは

SetCurrentDirectory(argv[1]); 
/*      ^1 not 0 */ 

argv[0]をしたいが、現在のプログラムの名前であるので、それはディレクトリではありません。また、SetCurrentDirectory()が返すかどうかはわかりませんが、APIデザイナーだった場合は、呼び出し元に失敗または成功を知らせる何かを返すようにします。

+0

argv [1] nullの場合 –

+0

@SebiBurchi - argv [1]がnullの場合、コマンドライン引数はありません - あなたの投稿のコメントを参照してください – KevinDTimm

関連する問題