昨日、入力した文字列「#ffaa00」を10進数の数字「255,170,0」に変換するプログラムをとりあえず打ってみたけど…
入力させるところの、
scanf("%c%c%c%c%c%c%c",&c[0],&c[1],&c[2],&c[3],&c[4],&c[5],&c[6]);
これって、1文字ずつの入力ではなくて、例えば
scanf("%s",&str);
のように文字列入力にしておいて、あとからffaa00をff,aa,00に分割できないものか・・・
ポインタ使えばできるかな o(^O^*=*^O^)o
・・・ポ・イ・ン・タ・・・
今まで、避けてきたけどちょっと復習してみます・・・
*** 「かめかめPHP」運営中 ***
入力させるところの、
scanf("%c%c%c%c%c%c%c",&c[0],&c[1],&c[2],&c[3],&c[4],&c[5],&c[6]);
これって、1文字ずつの入力ではなくて、例えば
scanf("%s",&str);
のように文字列入力にしておいて、あとからffaa00をff,aa,00に分割できないものか・・・
ポインタ使えばできるかな o(^O^*=*^O^)o
・・・ポ・イ・ン・タ・・・
今まで、避けてきたけどちょっと復習してみます・・・
↓↓↓ ヽ(^◇^*)/ ↓↓↓
|
PR
strtolなるものを教えていただいたので、これを使って、パソコン甲子園2008予選問題 第4問を解くための準備をしたい。自分の力では一気にプログラムを書けないので、まずは…
*** 「かめかめPHP」運営中 ***
ここからソース
それでは実行結果
| 16進数によるカラーコードを入力させ、RGBの各色を10進数で表示させる 例:入力→#ffff00 出力→255,255,0 |
↓↓↓ ヽ(^◇^*)/ ↓↓↓
|
ここからソース
#include‹stdio.h›
#include‹stdlib.h›
int main(){
char c[10][2];
char *end[10];
int n[10],i,red,green,blue;
scanf("%c%c%c%c%c%c%c",&c[0],&c[1],&c[2],&c[3],&c[4],&c[5],&c[6]);
for(i=1;i<=6;i++){
n[i]=strtol(c[i],&end[i],16);
}
red=16*n[1]+n[2];
green=16*n[3]+n[4];
blue=16*n[5]+n[6];
printf("%d,%d,%d\n",red,green,blue);
return 0;
}
|
それでは実行結果
#ffaa00 255,170,0 |
少し、力技っぽくなりましたがC言語の文字処理関数を駆使して、16進数の文字を10進数の数字変換することが出来ました。ヽ( ´ー`)ノ
しかし、もっとスッキリといかないものでしょうかね…
*** 「かめかめPHP」運営中 ***
ここからソース
しかし、もっとスッキリといかないものでしょうかね…
↓↓↓ ヽ(^◇^*)/ ↓↓↓
|
ここからソース
#include‹stdio.h›
#include‹ctype.h›
int main(){
char s;
int n;
s=getchar();
if(isxdigit(s)){ /* 16進数の判定 */
if(isalpha(s)){ /* アルファベットの判定 */
if(islower(s)){ /* 小文字の判定 */
n=s;
n=n-87;
}
else{
n=s;
n=n-55;
}
}
else{
n=s;
n=n-48;
}
printf("16進数の文字%cは10進数の数字%dです\n",s,n);
}
else{
printf("16進数ではありません\n");
}
return 0;
}
|
以前の記事『パソコン甲子園2008』で「16進数の文字を数値に変換するにはどうしたらよいのだろう」と書きましたが、C言語の「文字処理関数」を使えば何とかなりそうだということに気が付きました。
そのなかで、
isxdigit(文字):は文字が16進数の文字なら真
という関数もあり、いけそうな気がしました。
早速、やってみよう。
本日の反省、C言語の入門書は読破したつもりだったけど、奥が深いな~
( ̄~ ̄;)
*** 「かめかめPHP」運営中 ***
そのなかで、
isxdigit(文字):は文字が16進数の文字なら真
という関数もあり、いけそうな気がしました。
早速、やってみよう。
本日の反省、C言語の入門書は読破したつもりだったけど、奥が深いな~
( ̄~ ̄;)
以前、アクセスカウンタを作成したのですが、テキストカウンタ、グラフカウンタ、画像カウンタの3つのファイルを別々に作成していました。今回3つのファイルを1つにまとめて、設定により、モードの切り替えができるように変更しました。
*** 「かめかめPHP」運営中 ***
