2016-10-27 11 views
-1

sscanf()関数の出力文字列として文字ポインタ(char *)を使用できますか?私は文字列の長さを知りません(これが私がポインタを使用している理由です)。sscanf()内の文字ポインタ

char *name; 
sscanf(data, "Name:%[^\t\n]", name); 
+0

ポインタがどこを指している必要があり.. – Marco

+0

号は 'のsscanf() '配列の最初の文字に' char'点へのポインタである引数ことを必要とし、その配列は、十分な大きさでありますそれに書き込まれるものはすべて保持する。 – Peter

+1

'sscanf()'を使用している場合は、処理前の入力文字列の長さ、つまり出力(引数)文字列の最大長を知ることができます。 –

答えて

0

はい、文字ポインタを使用して別の文字列から文字列を抽出できますが、この文字ポインタには十分なスペースが割り当てられます。

フォーマット指定子は、1つの指定子で終了する必要があります(ここでは、 文字列の場合は 'がありません)。

char name[MAX_LENGTH+1]; // allocate enough characters 

sscanf(data, "%[^\t\n]s", name); 
+0

ええ、ありがとう。とった。 –

0

を使用できます。引数が配列の場合、配列のベースアドレスはsscanf関数に渡されます。 sscanfへのポインタを渡すことは、配列名(配列のベースアドレス)を渡すことと同じくらい効果的です。

関連する問題