激凹みから立ち直る方法

c言語で文字列に含まれる10進数部分を16進数に変換する方法を教えてください。
 sdkk161h→sdkkA1h
161 →  A1

A 回答 (2件)

文字と数字を分けて%xで出力すればいいのでは.


例;printf("%x", a);
    • good
    • 0
この回答へのお礼

ありがとうどざいます。なんとかうごきました。

お礼日時:2004/10/23 20:23

とりあえず、作ってみました。


#include <stdio.h>
#define ON 1
#define OFF 0

char *conv(char *buff,const char *str){
char *po;
const char *pi;
int numFlag=0,c;
unsigned hex=0;

for(po=buff,pi=str;*pi;pi++){
if('0' <= *pi && *pi <= '9'){
numFlag=ON;
hex=hex*10+(*pi-'0');
} else {
if(numFlag==ON){
c=sprintf(po,"%X",hex);
po+=c;
numFlag=OFF;
hex=0;
}
*po++=*pi;
}
}
*po='\0';
return(buff);
}

void main(void){
char buff[80];
printf("%s\n",conv(buff,"sdkk161h"));
}
    • good
    • 0
この回答へのお礼

すいません。まだ初心者でポインタならってないんです。これから参考にします。ありがとうございます。

お礼日時:2004/10/23 20:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!