2016-12-04 18 views
0

私は文字列(char *)の配列を取り、スレッドを操作できるようにそれらを等しく分割しようとしています。理論的には、ファイル名配列内の位置を参照する構造体を作成することができます。私はそれを説明するために少しグラフィックを提供しましたが、以下のコードでは、40のファイル名ごとにそれをメンバーstruct(struct配列)に追加します。私はそれが少し混乱していることを知っていますが、私はそれを明確にすることができる方法があれば教えてください。Cの配列への参照をコピーする

ファイル名内のオフセットされた場所への参照で、tの配列に結果が出るようにしたいのですが、コンパイラはt[i].files = filenames[incr];を許可しないので、どうすればよいでしょうか?

enter image description here

typedef struct divided_files{ 
    char** files; 
    int number_of_files; 
} struct_struct; 

int threads = 8; 
struct_struct* t = malloc(threads*sizeof(struct_struct)); 
char* filenames[320]; //imagine it's populated with strings 

int i; 
int offset = 40; 
int incr = 0; 
for(i = 0 ; i < threads; i++){ 
    t[i].files = filenames[incr]; 
    incr += offset; 
} 
+0

ここに質問がありますか?これまでのところ、 'number_of_files'を設定したいかもしれませんが、あなたの320文字列をうまく分割するように思えます。正確に320のファイルがなく、それらを均等に分割したいと心配していますか? –

+0

OPがコンパイラのエラーを投稿した場合は、もっと明らかになっているはずです... @asdasda – qxz

+0

最近の編集で明確にするようにしました – asdasda

答えて

0

あなたのコード、それはあなたが何をしたいんように見える - マイナーチェンジを除いて - すべてのスレッド40を与え、配列ア​​ップを分割。配列へのオフセットへのポインタを取得するには、配列ポインタに直接オフセットを追加します。あなたが初期化されていないnumber_of_filesを残しているよう

t[i].files = filenames + incr; // pointer arithmetic to get an offset pointer 

また、それが見えます。コードが実際にそれを使用している場合は、それを忘れないでください。

+0

それはまさにそれでした、ありがとう! – asdasda

関連する問題