電子書籍の厳選無料作品が豊富!

2度目の質問になります。



現在おみくじプログラムを製作する上で、get methodによって入力フォームに入力された氏名:田中太郎が変換されたデータ「%C5%C4%C3%E6%C2%C0%CF%BA」のようなデータがnに。ラジオボタンにより男と選択された性別「man」という文字列がsに入っています。
これをint型の数値に変換したいのですが、どうやるのが一番適切な方法でしょうか?


先生には一度16進数にしてからそれをまた10進数へ~のように言われています。
ただ調べてもいい関数などが見つかりません。


まったく無知で申し訳ないのですが、よろしければご教授願います。
よろしくお願いします。

(前回質問した時に回答いただいた方法ではなく上記のような方法でやるように言われたため、以上のようなやり方をしています。前回ご回答いただいた方申し訳ないです・・・。)

A 回答 (5件)

> デコードでしないで文字コードの方だけで処理する場合



そもそも文字列の各要素には文字コードが入っていますので,
各要素の値を単純に足していくだけです。

char name[] = "%C5%C4%C3%E6%C2%C0%CF%BA";
const char *p;
int s = 0;

for (p=name ; *p ; p++) {
s += (unsigned char)*p;
}

printf("%d\n", s);
    • good
    • 0
この回答へのお礼

いつもご回答ありがとうございます!

先生と話したところデコードしなくてもよいという話になったので、文字コードだけで処理を行うことにしました。
また、その際sheep555さんのプログラムを使わせていただきました。

また、おかげさまでおみくじのプログラムを完成させることができました。
本当にsheep555さんにはお世話になりました。
本当にありがとうございました。

1月29日に千葉県の某大学で情報系ゼミでの合同発表会があり、そこで今回のWebおみくじの製作についての発表を行う予定ですので見に来てもらいたいぐらいですww

本当に感謝しています。ありがとうございました!

お礼日時:2011/01/16 01:11

「%C5%C4%C3%E6%C2%C0%CF%BA」



この文字列の文字コードをそのまま足していくのが簡単ですが,
先生の言葉からしてデコードしないといけないのでしょうねぇ。

文字列の頭から1文字ずつ調べて,
 '%' が現れたら次の2文字を16進数とみなして変換,-(1)
 '+' が現れたら スペース ' ' に変換,
 それ以外はそのまま。
とすればデコードできます。

(1) のところは,標準関数だと sscanf のフォーマットに "%02x" を指定すれば OK。

http://www.tohoho-web.com/wwwcgi3.htm#CgiEncode

# 実用的な CGI だと文字コードの違いとかも気にしないといけません。
    • good
    • 0
この回答へのお礼

いつも詳しいご回答ありがとうございます。

今日はあまり時間がないのでまだデコードの方は試していないのですが、デコードでしないで文字コードの方だけで処理する場合どのようにやればよいのでしょうか?

お礼日時:2011/01/15 16:48

整数値の文字列を整数型( int型 )に型変換するには、atoi()を使います。



要するに、char型文字列の、"12345"を、int型の12345に変換出来るというわけです。


atoi
書式int atoi( const char *s )
機能数字から整数型( int型 )に変換
引数const char *s : 変換元の文字列を指定
戻り値int型に変換された整数値




サンプルコード
数値の文字列 "12345" を整数型( int型 )に変換して表示してみます。
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
char *s = "12345";
int i;

i = atoi( s );
printf( "数値:%d¥n", i );

return 0;
}



結果
数値:12345
と、表示されます。
アッサリ行けますね。
    • good
    • 0
この回答へのお礼

またまたありがとうございますw

お礼日時:2011/01/15 16:46

整数値の文字列を整数型( int型 )に型変換するには、atoi()を使います。



要するに、char型文字列の、"12345"を、int型の12345に変換出来るというわけです。


atoi
書式int atoi( const char *s )
機能数字から整数型( int型 )に変換
引数const char *s : 変換元の文字列を指定
戻り値int型に変換された整数値




サンプルコード
数値の文字列 "12345" を整数型( int型 )に変換して表示してみます。
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
char *s = "12345";
int i;

i = atoi( s );
printf( "数値:%d¥n", i );

return 0;
}



結果
数値:12345
と、表示されます。
アッサリ行けますね。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/01/15 16:46

「田中太郎」を数値に変換するといくつになりますか?



前回も指摘しましたが,文字列(特に氏名)をどのように数値に変換したいのかを明確にしてください。

文字数?画数の和?文字コードの和?
    • good
    • 0
この回答へのお礼

前回に引き続き素早いご回答本当にありがとうございます!

申し訳ないです。
できるのであれば文字コードの和がいいと考えています。

お礼日時:2011/01/14 23:54

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