• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:文字列からint型数値への変換(C言語))

文字列からint型数値への変換(C言語)

このQ&Aのポイント
  • C言語において、文字列からint型の数値に変換する方法について質問です。
  • get methodで入力された文字列を16進数に変換し、それを10進数に変換する方法を教えてください。
  • 前回の回答とは異なる方法での文字列からint型への変換方法を知りたいです。

質問者が選んだベストアンサー

  • ベストアンサー
noname#137556
noname#137556
回答No.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);

Euphor1c
質問者

お礼

いつもご回答ありがとうございます! 先生と話したところデコードしなくてもよいという話になったので、文字コードだけで処理を行うことにしました。 また、その際sheep555さんのプログラムを使わせていただきました。 また、おかげさまでおみくじのプログラムを完成させることができました。 本当にsheep555さんにはお世話になりました。 本当にありがとうございました。 1月29日に千葉県の某大学で情報系ゼミでの合同発表会があり、そこで今回のWebおみくじの製作についての発表を行う予定ですので見に来てもらいたいぐらいですww 本当に感謝しています。ありがとうございました!

その他の回答 (4)

noname#137556
noname#137556
回答No.4

「%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 だと文字コードの違いとかも気にしないといけません。

Euphor1c
質問者

お礼

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

  • viqin
  • ベストアンサー率60% (3/5)
回答No.3

整数値の文字列を整数型( 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 と、表示されます。 アッサリ行けますね。

Euphor1c
質問者

お礼

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

  • viqin
  • ベストアンサー率60% (3/5)
回答No.2

整数値の文字列を整数型( 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 と、表示されます。 アッサリ行けますね。

Euphor1c
質問者

お礼

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

noname#137556
noname#137556
回答No.1

「田中太郎」を数値に変換するといくつになりますか? 前回も指摘しましたが,文字列(特に氏名)をどのように数値に変換したいのかを明確にしてください。 文字数?画数の和?文字コードの和?

Euphor1c
質問者

お礼

前回に引き続き素早いご回答本当にありがとうございます! 申し訳ないです。 できるのであれば文字コードの和がいいと考えています。

関連するQ&A