これは、php_sprintf
PHPの拡張機能を作成するときに使用される内部PHP関数を指していると思います。C
次に、関数と同じパラメーターがありますsprintf
。
MACアドレスを標準出力または文字列に出力しようとしていますか?
標準出力(およびその後コンソール)に印刷する場合は、を使用しますphp_printf
。したがって、コードは次のようになります。
void PrintMACaddress(unsigned char MACData[]){
php_printf("MAC Address: %02X-%02X-%02X-%02X-%02X-%02X\n",
MACData[0], MACData[1], MACData[2], MACData[3], MACData[4], MACData[5]);
}
出力に出力する代わりに値を返したい場合は、注意すべき点がいくつかあります。
char *
C ++で文字列を操作する場合は、次のいずれかとして表すことができます。std::string
- 使用
std::string
するのがC++の方法です。
- 使用
char *
はよりC
風変わりなスタイルです。自分でメモリアレイを管理する必要があります(スタックに割り当てるか、andを使用new []
してdelete []
)
次を使用してメソッドを書き直した場合std::string
:
std::string PrintMACaddress(unsigned char MACData[]){
char tmp_[32]; // The output string should be always 32 bytes long
php_sprintf(tmp_,"MAC Address: %02X-%02X-%02X-%02X-%02X-%02X\n",
MACData[0], MACData[1], MACData[2], MACData[3], MACData[4], MACData[5]);
return std::string(tmp_);
}
使用したい(またはしなければならない)場合char *
:
char *PrintMACaddress(char *MACString, unsigned char MACData[]){
php_sprintf(MACString,"MAC Address: %02X-%02X-%02X-%02X-%02X-%02X\n",
MACData[0], MACData[1], MACData[2], MACData[3], MACData[4], MACData[5]);
return MACString;
}
ここで、メソッドは1つの新しいパラメーター(少なくとも32バイトの割り当てられた配列へのポインター)を取得します。次に、この配列へのポインタを返します。次のように使用します。
char macString[44];
PrintMACaddress(macString, MACData);
/* Use the string stored in macString */
また
char* macString = new char[44];
PrintMACaddress(macString, MACData);
/* Use the string stored in macString */
delete [] macString;
編集: php_sprintfで答えの2番目の部分を更新しました