- ベストアンサー
VC++ での表記
("\000test\@gmail.com\000abcde12345") ¥のところがバックスラッシュになっている 上の文字列を、 VC++ で、書いたらどうなりますか? Gメールのサーバーに、SMTP-AUTH ではいるときのユーザー名とパスワードです。 base64 変換する前の文字列です。 他のサンプルでは NULL で区切っていました。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>上の文字列を、 >VC++ >で、書いたらどうなりますか? そのままでいいはずですが。 日本語のフォントの円記号の文字コード0x5cは 英語圏のフォントだとバックスラッシュが割り当てられているというだけですから。 >他のサンプルでは NULL で区切っていました。 char に NULL(ポインタ) を使ってるって事でしょうか。 もしそうならあまりよいサンプルでないかも。 char buf[256]; // コンパイル時に警告やエラーにならなくても以下の様なNULLの使い方は間違ってます。 buf[0] = NULL; memset(buf, NULL, sizeof(buf));
その他の回答 (1)
- kmee
- ベストアンサー率55% (1857/3366)
http://ja.wikipedia.org/wiki/%E3%83%90%E3%83%83%E3%82%AF%E3%82%B9%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5#.E3.83.90.E3.83.83.E3.82.AF.E3.82.B9.E3.83.A9.E3.83.83.E3.82.B7.E3.83.A5.E3.81.A8.E5.86.86.E8.A8.98.E5.8F.B7 \0 は \n や \r などと同じエスケープシーケンスです。
お礼
ありがとうございました。 次のようにしました。 char out_data[2048]; char b64in[256]; char b64out[512];int np; np=0; b64in[np] = NULL; np = np+1; strcpy((char *)(b64in+np),"test\@gmail.com"); np = np + strlen("test\@gmail.com"); b64in[np] = NULL; np = np+1; strcpy((char *)(b64in+np), "abcde12345"); np = np+strlen("abcde12345"); b64in[np]=NULL; //base64_encode(char *in, char *endin, char *out) base64_encode(b64in, (b64in+np), (char *)b64out); sprintf_s( out_data, "%s\r\n",b64out);
お礼
ありがとうございました。 次のようにしたら、変換できました。 元のままでは変換できませんでした。 char out_data[2048]; char b64in[256]; char b64out[512];int np; np=0; b64in[np] = NULL; np = np+1; strcpy((char *)(b64in+np),"test\@gmail.com"); np = np + strlen("test\@gmail.com"); b64in[np] = NULL; np = np+1; strcpy((char *)(b64in+np), "abcde12345"); np = np+strlen("abcde12345"); b64in[np]=NULL; //base64_encode(char *in, char *endin, char *out) base64_encode(b64in, (b64in+np), (char *)b64out); sprintf_s( out_data, "%s\r\n",b64out);