2017-06-15 7 views
-1

Cでは、文字列の配列に文字列が含まれているかどうかを調べます。文字列の配列それがこのFILE_PATHを追加する他に返し、その後がある場合、私は、それは文字列(FILE_PATHの配列)の配列にすでに存在しているかどうかを確認する必要があり文字列が配列内に存在するかどうかチェックし、配列内にCの配列を追加します

char *file_path; 

- 私のコードで

は、私は、ファイルのパスを取得します文字列の配列に渡します。

Cでこのコードを手助けできる人はいますか?

+0

問題は何ですか? –

+0

ようこそStackOverflowへ。 [ツアー]を取ってください。 よくある質問stackoverflow.com/help/how-to-ask、 [mcve]を作成してください。 MCVEには、さまざまなサンプル入力(すべての側面を示す)と望ましい出力が含まれている必要があります。 – Yunnosch

+0

私はCで正確なコードを思いつくことができません。私は擬似コードを持っており、Cコードを思いついています。 – riju

答えて

0
for(int i=0; i<dim; i++){ 
    if(strcmp(file_path,array[i])==0) return 0; 
} 

//if it exits the loop it means that it did not find the string 

array=realloc(array,(dim+1)*sizeof(char*)); 
strcpy(array[dim],file_path); 

これは問題ありません。配列、文字列、関数に関する研究をしてください。コードを改善したい場合は、strncpy()は実際にはstrcpy()よりも優れています。 また、動的メモリ(Malloc、calloc、realloc ...)を操作する関数を見てください。 配列を正しい方法(char *配列[dim])として宣言したと仮定しています。 また、さまざまな関数の戻り値をチェックする必要がありますが、Cプログラミングを開始したばかりなので、私はあなたに研究をさせていただきます。

+0

reallocされているオブジェクトへのポインタに 'realloc()'の結果を直接代入するのは間違いです。 'realloc()'はエラーのイベントでヌルポインタを返すことができ、メモリリークやデータの損失が発生しました。最初に一時ポインタに割り当て、 'array'を再割り当てする前に再配置が成功したかどうかを確認してください。 –

+0

@DavidBowling、実際には、コードをガイドラインとして解釈し、その全体を実装しようとしているエラー管理が残っていることを指定しました。私はポストの著者がCコードをよく理解できていないように感じます。 – BattiestFawn66

関連する問題