
Cでネットワークプログラミングの勉強をしているのですが
IPアドレスをin_addr型で保存しています。
IPアドレス、具体的には「192.168.0.1」というのをchar型の配列で
ip[0]="192"
ip[1]="168"
ip[2]="0"
ip[3]="1"
と言う風に変えたいのですが何か関数を使って出来ないでしょうか。
in_addr型をchar型でキャストした場合は
ip[0]="1"
ip[1]="9"
ip[2]="2"
と言うような感じになってしまいました。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
ip[0]="192"
という風に変えたいと書かれておりますが、ip[]というのはどう宣言されているのでしょうか。
char ip[32];
のように宣言されているのなら、それはあくまでも「charの配列」なので、ip[0]には一つのcharしか代入できず、
ip[0]="192"
という形で入れることはできません。大きさが4つの配列で実現するなら、
ip[0]=192
という形で文字列でなくunsigned char型の数値として代入するか、
char ip[4][4];
のように「文字列の配列」つまり「charの配列の配列」と宣言しないといけません。
文字列として'.'を抜いたそれぞれの値を取り出したいのなら、in_addr型の変数をinとすると、inet_ntoa()を使って、
char *ip[4];
char ip_str[16];
と宣言しておき、
strcpy(ip_str,inet_ntoa(in));
ip[0] = strtok(ip_str,".");
ip[1] = strtok(ip_str,NULL);
ip[2] = strtok(ip_str,NULL);
ip[3] = strtok(ip_str,NULL);
とすればいいのではないでしょうか。
参考URL:http://www.linux.or.jp/JM/html/LDP_man-pages/man …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
列数の多いエクセルのデータを...
-
vbsでテキストファイル内の文字...
-
エクセル、この関数の意味は?
-
タンパク質 配列解釈ツール CL...
-
Cプログラムについて
-
VBAでダブルコーテーション入り...
-
[VBS]変数を定数に変換する方法...
-
Nullってどういう意味ですか?
-
VB6.0-整数と余りを求める
-
足して100になるような乱数のア...
-
java final
-
エラーの意味は? Lvalue req...
-
Accessコンボボックスにレコー...
-
C言語 列挙型(enum型)変数について
-
C#で動的にコントロールを取得...
-
C言語 exitの使い方
-
Variant型で宣言してるのにEmpt...
-
java 乗算をシフト演算と加算を...
-
ラズベリーパイ B でgpioを使っ...
-
余剰演算子について教えてください
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vbsでテキストファイル内の文字...
-
VBAのWorksheetFunctionの引数...
-
excelの、ある数式内の{}の意...
-
COLUMN(1:1)の意味を教え...
-
配列の値を置換するにはどうす...
-
エクセル、この関数の意味は?
-
初心者プログラミング
-
RichTextBoxの改行を認知してく...
-
エクセルへのデータの貼付時に...
-
配列に入った文字列を結合した...
-
数値を浮動小数点32bitHEXコー...
-
○桁にある数値を取得する VB.N...
-
列数の多いエクセルのデータを...
-
VB 配列の内容をファイルに書...
-
basp21のアップロード
-
C#の問題です。 文字列型の配列...
-
PythonでLoopを使って配列内の...
-
何故ただのvariant型と定義され...
-
シートからシートへのコピー
-
in_addrからchar型の文字列の変換
おすすめ情報