2016-10-29 8 views

答えて

0

実際には文字列配列は必要ありません。 Cでは配列を関数に送ることはできませんし、関数から配列を返すこともできません。溶液? "the"配列の開始点と長さを送ることができます。受信側は "the"配列を理解することができます。あなたの質問については、最初の引数として配列の開始位置を、2番目の引数として配列の長さを送る必要があります。

+0

のアドレスであるように私は、「代わりの開始を「ポインタ」を使用したいですポジション"。それはポインタの代わりに0を送る彼につながる可能性があります:) – SenselessCoder

-1

char *result[]は、charへのポインタの配列を意味します。しかし、問題は、パラメータlenの意味は何ですか?

通常、write_file()のような名前の関数では、関数は文字列を出力に書き出し、lenパラメータは書き出す文字数になります。

よう
char *myStrings[] = { 
    "string 0", 
    "string 1" 
}; 

write_file (myStrings, 0); // passing zero as len as unsure what it is. 

か何か:関数に見えるようなものを意味するであろうと、この機能を使用するには

私は疑う何

char *myStrings[20]; // array of pointers to chars 
int iLoop; 

for (iLoop = 0; iLoop < 20; iLoop++) { 
    myStrings[iLoop] = malloc(1000); // allocate a large buffer for each string 
    read_string (myStrings[iLoop], 1000); // some made up function to read a string 
} 

write_file (myStrings, 20); 

は、関数が実際にvoid write_file(char *result, int len)あるべきか、それがあるべきであるということですvoid write_file(char result[], int len)したがって、char配列へのポインタの配列を受け入れるのではなく(文字列がCで通常どのように使用されるか)、char配列へのポインタを受け入れる必要があります。

したがって、write_file()のアイデアは、複数の文字列ではなくファイルに単一の文字列を書き込むことです。

0
char result[10]; 
write_file(&(result[0]), 10); 

又は

char result[10]; 
write_file(result, 10); 

同一である、配列識別子は混乱を避けるために単にその最初の要素

+0

あなたに役立った答えを受け入れてupvoteを検討してください。 – MarianD

関連する問題