• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:WritePrivateProfileString)

Visual C++でunsigned char*型の変数をファイルに保存する方法

Wr5の回答

  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.4

>unsigned char *signal; >Receive(signal);  //APIの関数 >printf("%s\n",signal); >としてみたら文字化けしました。 当たり前ですが、受信する前にsignalは有効な領域指しているんですよね? 普通ならこういう場合、ポインタと一緒に領域のサイズも渡すんですが… 今回は「240バイト固定」のバッファが指定されているのでサイズ情報の引き渡しはないのでしょう。 で……文字列じゃなくてバイト列…ですよね? No.2さんのリンク先見ると。 バイト列ならprintf()での表示は無理でしょう。 その他、細かいことは既に回答されているので……。 # もちろん、私ならこういう場合はふつ~にバイナリデータとして扱いますけどね。 # ファイルに落とした後でならバイナリエディタで眺めることもできますし。

関連するQ&A

  • UNICODE化のための書き換え

    お世話になります。 Visual stdio 2010 C++で作成しております。 以前までは、UNICODEを意識しておらず、  char  const unsigned char* を使用していました。 UNICODE化を意識して  char→TCHAR に変更しているのですが、  const unsigned char* はどのように書き換えればよいのでしょうか? ※LPCTSTRだけだと意味が変わってしまう気がして。。。 お手数ですがよろしくお願い致します。

  • iniファイルに追記がしたいです。

     いつもお世話になっています。  iniファイルの中のあるデータをGetPrivateProfileStringで調べて、その中になければデータを  追記したいです。  WritePrivateProfileStringの場合、iniファイルにあるデータが追記したい内容がないだけで、他のデータが 入っていても、上書きされてしまうんですよね?  もしその中に他のデータが入っていた場合は、追記をしたいのですが、それができるAPI関数って  何かありますか?  iniファイルに関して、ネットで調べていると、WritePrivateProfileStringなどしか出てこなくて・・・。  もしできないようでしたら、追記できるような何かいいアイディアがあれば・・・と思っています。  すみませんが、よろしくお願いします。  わかりづらい文章で申し訳ありません。

  • C言語でPGMファイルの読み込みたいです。

    Visual C++ 6.0でPGM画像を読み込みたいのですが、ファイルの読み込みがわかりません。 コメント行は読み飛ばして以下の変数・配列にそれぞれ格納したいです。 int w,h //画像サイズ unsigned char img[][] //画像データ

  • TextBoxの文字がかけてしまうのですが VB.NET

    VB.NET FrameWork1.1の環境なのですが、 Declare Function WritePrivateProfileString Lib "KERNEL32.DLL" Alias "WritePrivateProfileStringA" ( _ ByVal lpAppName As String, _ ByVal lpKeyName As String, _ ByVal lpString As String, _ ByVal lpFileName As String) As Integer このAPIを使ってファイルに文字列を記録しているのですが、 TextBoxに表示したファイルのフルパスを記録すると このAPIを使った直後にそのTextBoxの文字の後半が欠けてしまいます。 短いパス名なら大丈夫なのですが、長いパス名の場合に欠けてしまいます。 試しに Dim a As String = TextBox1.Text WritePrivateProfileString("TextBox", "1", a, FileName) Console.WriteLine(a) としても同じく欠けてしまいます。 変数aの宣言の型をString ではなく Object にすると 欠けなくなるのですが、変数aやTextBoxの内容は読み取った だけなのになぜ書き換えられてしまうのでしょうか? どの場合でもファイルへの記録は正常に出来ています。 何か問題点などありましたらご教授いただけると助かります。

  • 変数格納

    C言語で、SJISのテキストファイルを読み出してunsigned charなどの変数に格納するにはソースをどのようにすれば出来ますか?テキストファイルの中には、改行、スペース、Tabなどがあります。

  • icon format について

    Visual Studio.NET 2003 MFC を使用しています。 View画面で、アイコンを表示しようと思いました。 アイコン読み込みようのクラスを作成しました。 class icon { public: void IconHeadRead(FILE *fp,int *width,int *height) { unsigned char uc; unsigned short us; unsigned int ui; fread(&us,sizeof(unsigned short),1,fp); fread(&us,sizeof(unsigned short),1,fp); fread(&us,sizeof(unsigned short),1,fp); fread(&uc,sizeof(unsigned char),1,fp);*width=uc; fread(&uc,sizeof(unsigned char),1,fp);*height=uc; fread(&uc,sizeof(unsigned char),1,fp); fread(&uc,sizeof(unsigned char),1,fp); fread(&us,sizeof(unsigned short),1,fp); fread(&us,sizeof(unsigned short),1,fp); fread(&ui,sizeof(unsigned int),1,fp); }; void IconDataRead(FILE *fp,unsigned char *red,unsigned char *green,unsigned char *blue) { unsigned char uc; fread(&uc,sizeof(unsigned char),1,fp);*red=uc; fread(&uc,sizeof(unsigned char),1,fp);*green=uc; fread(&uc,sizeof(unsigned char),1,fp);*blue=uc; }; }; このred,green,blueの値を使用して、 SetPixelでドローしようと思いましたが、 変な表示になります。 width,heightは、正しいようです。 ICON フォーマットについて教えてください。 よろしくお願いします。 同じような要領で、bitmapは保存、読み込みはできました。

  • wParam

    wParamは、unsigned int型で、仮想キーコードを、格納してますよね。 wsprintf()内で(TCHAR)キャストしてますが、 これは、変数strの型がTCHAR型なので(wParamは、unsigned intなので型をあわせるために)やっているんですか? (TCHAR)キャストしないとエラーになりますか?教えてください。 HDC hdc; TCHAR str[255]; swich(umsg){   case WM_CHAR:     wsprintf( str, TEXT("%c"), (TCHAR)wPara );     hdc = GetDC(hwnd);     TextOut(hdc, 0, 0, str, lstrlen(str));     return0 }

  • OCXのメソッドの引数に文字列を返したい

    こんにちは。いつもお世話になっております。 早速ですが質問させて下さい。 VisualC++のClassWizardにて作成したメソッドの引数に文字列を返したいのですがどうすればよいでしょうか。 例えば、「test.ocx」というOCXにGetFileNameというメソッドを追加したとします。 ---<GetFileName>--- UINT GetFileName( LPCTSTR FilePath, //ファイルフルパス LPCTSTR FileName //ファイル名 ) ------------------- ---<VBからの呼び出し>--- FilePath = "C:\Program Files\test.txt" ret = obj.GetFileName(FilePath, FileName) 'ここでFileNameに値を返したい ------------------------ ここでFileNameにOCXから値を返すようにしたいのですが、型(ClassWizardパラメータリストの「タイプ」)は何になるのでしょうか。 数値を返す場合は、「long*」でできたのですが、 文字列を返す方法が分かりません。(「LPCTSTR*」というのもないですし) どうかご教示下さい。 <環境> Windows 2000, Visual C++ 6.0, Visual Basic 6.0

  • WM_CHAR or WM_KEYDOWN の「wParam」について

    よくわかっていないのですが、 switch (message) { case WM_CHAR: というところで、wParamから、文字の情報取得して、 HDC宣言して、TextOut関数使用…、の途中で、 wParamの文字情報は、どのようにすれば TextOut関数に渡せるのでしょうか? Visual C++を勉強したてで、勉強の成果をと思い、 テキストエディタを作ってみたいと思ったのですが、 さて、どうしたらよいのでしょうか? エラー内容は、unsigned int → const char * にできません、ということなのですが、 じゃぁ、型の変換の仕方は?という感じです。 初心者なので、簡単な例をつけて説明してくださると助かります。よろしくお願いします。

  • templateをシリアライズするには?

    templateで作った変数をシリアライズする方法がわからなくて困っています。 例えばhogehogeという変数を用意します。これはtemplateで hogehoge<TYPE>として、型はint、double、char[]、wchar_t[] のいづれかを取れるようにします。 この変数hogehogeをシリアライズしてファイルに保存したいのです。 シリアライズするには、int又はCObject*又はCString型にいったん キャストしてからシリアライズすることになると思うのですが ここで、hogehogeという変数がどの型になっても問題なくシリアラ イズできるようにするにはどうしたらいいのでしょうか?