人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

C言語の質問です(C言語初心者なのでわかりやすくお願いします)
1.文字列型をshort型に変換する方法
2.MACアドレス文字列(AA:BB:CC:DD:EE:FF)をchar型の配列に格納する方法

●質問者: neige_larme
●カテゴリ:コンピュータ 学習・教育
✍キーワード:.mac AA BB CC Char
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● oddfancy
●10ポイント

http://www.linux.or.jp/JM/html/LDP_man-pages/man3/atoi.3.htm...

Manpage of ATOI

1. atoiという関数を使います

#include <stdlib.h>

short s = (short)atoi(”12345”);

2. こんなの例ではどうでしょうか。

#include <stdio.h>

int main(int argc, char** argv)

{

const char* ptr = ”AA:BB:CC:DD:EE:FF”;

char tmp[6][3];

int i;

for( i = 0; i < 6; i++ ){

tmp[i][0] = ptr[0];

tmp[i][1] = ptr[1];

tmp[i][2] = ’¥0’;

ptr += 3;

}

for( i = 0; i < 6; i++ ){

printf(”%s¥n”, tmp[i]);

}

return 0;

}


2 ● wm5775
●0ポイント

http://www.hatena.ne.jp/

はてな

1.

char a = ’a’;

short i = 0;

i = (short)a;

2.

char address[] = ”AA:BB:CC:DD:EE:FF”;

◎質問者からの返答

すいません例を挙げておけば良かったですね。

1番目のは一文字ですが文字列なので”123”でも可能なのですか?

2番目のは「AA」「BB」ごとに配列に格納したいのですが。


3 ● aki73ix
●50ポイント

http://www.hatena.ne.jp/1103251340#

人力検索はてな - C言語の質問です(C言語初心者なのでわかりやすくお願いします) 1.文字列型をshort型に変換する方法 2.MACアドレス文字列(AA:BB:CC:DD:EE:FF)をchar型の配列に格納する方..

1.

short a;

char test[]=”1234”;

a=atoi(test); /* stdlib.hをincludeすること 文字列を数値に変換します*/

2.

int i;

char MAC[256]=”AA:23:4e:58:69:02”;

char mac2[6][3];

for(i=0;i<6;i++){

//数値の先頭のポインタ取得(3字ごとにあるので0,3,6,9,12,15文字目が該当)で2も事実コピー

strncpy(mac2[i],MAC+i*3,2);

mac2[i][2]=0;

// WINAPIだと終端を0にしてくれないので

// mac2[i][0]=MAC[i*3];

// mac2[i][1]=MAC[i*3+1];

// mac2[i][2]=0;

//と同じ

}

3.おまけMACアドレスをINT型配列に格納

for(i=0;i<6;i++){

//1文字目(3字ごとにあるので0,3,6,9,12,15文字目が該当)

j=(MAC[i*3]|’ ’)-’0’;

//2文字目(3字ごとにあるので1,4,7,10,13,16文字目が該当)

// |’ ’してるのは大文字があった場合小文字に変換するため

k=(MAC[i*3+1]|’ ’)-’0’;

//abcdefだった場合 10,11,12,13,14,15に変換する

if(j>10)j-=0x27;

if(k>10)k-=0x27;

//1文字目を16倍して2文字目の数値と足し算

mac[i]=(j<<4)+k;

}

こんな感じです

◎質問者からの返答

1番目の回答はatoiですね。shortなのでintでもいいのか自信がなかったのですが。

2番目は思ったより難しいのですね。勉強になりました。char mac2[6][3]となってますが、char mac2[6]の場合、格納することは可能でしょうか?

ありがとうございます。助かりました!


4 ● mogos
●50ポイント

http://www.paw.hi-ho.ne.jp/takadayouhei/technic/47.html

atoi 〜文字列を整数に変換する〜

1の方法はここに書いてあるようにatoiを使ってint型にしたものをshortにキャストすればできます。

char *a;/* 数字の文字列 */

short i = (short)atoi(a);

というかんじ。

http://www.geocities.jp/ky_webid/c/044.html

C言語編 第44章 型変換関数

2の質問についてはMAC文字列のような固定したフォーマットならsscanfが一番楽かと思います。

char *a = ”AA:BB:CC:DD:EE:FF”;

char mac[6];

sscanf(a, ”%s:%s:%s:%s:%s:%s”,&mac[0],&mac[1],&mac[2],&mac[3],&mac[4],&mac[5]);

◎質問者からの返答

1番目:やはりatoiでよさそうですね。自信がもてました。ありがとうございます。

2番目:ちょっと目から鱗でした。勉強になりました。ありがとうございます!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ