みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

char型・int型を相互変換させるプログラミング

今、C++で2つのPC間で数値データの送受信を出来るようにしようと思い、実際にデータを飛ばせるところまで来たのですが、送れるデータの型はchar型のみであるとのこと。
ですので、intの値を一旦charにして送り、送った先でまたintにしたらいいかなと考えてプログラミングしました。
簡単にできると思ったのですが、上手くいきません・・・。プログラムのどの部分が間違っているのでしょうか?
一人では、これ以上悩んでも好転しないので、皆さんのご指導をお願いします

以下プログラム抜粋、このプログラムでは型変換がおこなわれているかの確認ができればいいので、それのみでプログラミングしています
===================================================
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <iostream>

int main()
{
int a=123;
char *b=new char;
int c=1;
//変換部分
*b=(char)a;
std::cout<<"int→char>>>"<< c << "\n";
//逆変換部分
d=atoi(c);
std::cout<<"char→int>>>"<< d << "\n";
}
======================================================

投稿日時 - 2009-08-07 19:39:57

QNo.5189749

困ってます

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

Wr5

>送れるデータの型はchar型のみであるとのこと。

char型1つですか?
char型の「配列」で任意のサイズで送れるのですか?

>int c=1;
>d=atoi(c);

突然出てきた型が不明のdですが、どのような「数値」が入ることを想定していて、結果はどうでしたか?
なお、atoi()の第1引数が期待しているのは「'\0'で終端された数字が格納されている先頭アドレス」かと思われますが…。
それを踏まえて「数値」と「数字」の違いは理解されていますか?

# C/C++のカテがありますがそちらで質問されたほうが適切…かと。

投稿日時 - 2009-08-08 00:51:30

補足

ご回答ありがとうございます
穴ばかりの質問で申し訳ありません

>char型1つですか?
>char型の「配列」で任意のサイズで送れるのですか?
たぶんchar型なら、配列も・・・いけるはず、と考えてます
それができないとなると、通信システム的に値渡しが面倒になるので
その場合は通信のほうのプログラムをいじくることになるので
とりあえずはいけるという前提で大丈夫です。

>突然出てきた型が不明のdですが
すいません、ここの質問するために変数を微妙に変えて余計なものを無くしていった時に、思いっきりいろいろ漏れてたようです
正確には
===================================
//変換部分
*b=(char)a;
std::cout<<"int→char>>>"<< b << "\n";
//逆変換部分
c=atoi(b);
std::cout<<"char→int>>>"<< c << "\n";
===================================
でした

>なお、atoi()の第1引数が期待しているのは「'\0'で終端された数字が格納されている先頭アドレス」かと思われますが…。
確かに言われてみればそうでしたね
逆変換部分は「int→char」が上手く出来て値がちゃんと出てからどうなるか確認するつもりだったので、深く考えていませんでした

># C/C++のカテがありますがそちらで質問されたほうが適切…かと。
そんなカテあったのですか、ほかのC++質問者のカテを見たときに特に見当たらなかったので、気づきませんでした
もうすこし、ここで待って解決策が出なかった場合に、そちらに改めて質問させていただきます

投稿日時 - 2009-08-08 08:00:17

あなたにオススメの質問