2度目の質問になります。
現在おみくじプログラムを製作する上で、get methodによって入力フォームに入力された氏名:田中太郎が変換されたデータ「%C5%C4%C3%E6%C2%C0%CF%BA」のようなデータがnに。ラジオボタンにより男と選択された性別「man」という文字列がsに入っています。
これをint型の数値に変換したいのですが、どうやるのが一番適切な方法でしょうか?
先生には一度16進数にしてからそれをまた10進数へ~のように言われています。
ただ調べてもいい関数などが見つかりません。
まったく無知で申し訳ないのですが、よろしければご教授願います。
よろしくお願いします。
(前回質問した時に回答いただいた方法ではなく上記のような方法でやるように言われたため、以上のようなやり方をしています。前回ご回答いただいた方申し訳ないです・・・。)
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);
いつもご回答ありがとうございます!
先生と話したところデコードしなくてもよいという話になったので、文字コードだけで処理を行うことにしました。
また、その際sheep555さんのプログラムを使わせていただきました。
また、おかげさまでおみくじのプログラムを完成させることができました。
本当にsheep555さんにはお世話になりました。
本当にありがとうございました。
1月29日に千葉県の某大学で情報系ゼミでの合同発表会があり、そこで今回のWebおみくじの製作についての発表を行う予定ですので見に来てもらいたいぐらいですww
本当に感謝しています。ありがとうございました!
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 だと文字コードの違いとかも気にしないといけません。
いつも詳しいご回答ありがとうございます。
今日はあまり時間がないのでまだデコードの方は試していないのですが、デコードでしないで文字コードの方だけで処理する場合どのようにやればよいのでしょうか?
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
と、表示されます。
アッサリ行けますね。
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
と、表示されます。
アッサリ行けますね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- フリーソフト フォルダ、ファイル名の一括変換について 3 2023/03/16 09:23
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- Visual Basic(VBA) 複数ファイルのデータの統合について 12 2022/05/14 12:03
- Visual Basic(VBA) A列にある値をB列・C列にVBAで切り出し 3 2022/04/09 19:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CString から LPCTSTRの型に変換
-
Excel VBAでPDFファイルをMicro...
-
SQLのデータで半角カナを全角に...
-
SJIS->UTF8->SJISコード変換に...
-
ローマ字からカナに変換する方...
-
gccでiconvを使った文字コード...
-
URLが日本語なのになぜ表示...
-
文字コードの%E3%80%とは何です...
-
VB6にも「ToString」ってあり...
-
日本語をURL化 ごはん→%E3%81%9...
-
tkinter widget ことえり変換で...
-
Visual Studio プロパティペー...
-
VBScript 全角英数記号→半角英...
-
シャープ(#)の受け渡し
-
CString型からdouble型への変換
-
これはなんの文字コードでしょうか
-
Excelで半角カナのみを全角に変...
-
エクセルでの漢字(全角ひらが...
-
VBScript文字列をSJISからUTF8...
-
ヤフーで検索したときの文字コ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAでPDFファイルをMicro...
-
文字コードの%E3%80%とは何です...
-
CString から LPCTSTRの型に変換
-
VB6にも「ToString」ってあり...
-
gccでiconvを使った文字コード...
-
VBScript文字列をSJISからUTF8...
-
SJIS->UTF8->SJISコード変換に...
-
ローマ字からカナに変換する方...
-
シャープ(#)の受け渡し
-
文字列を quoted-printable 文...
-
Encode.pmで「髙」(ハシゴ高)...
-
LINUX上でシリアル通信(C++)
-
ローマ数字の変換をしたいのですが
-
Kシェルでの文字型→数値型変換
-
テキストをhtml変換するには
-
ひらがなから全角カタカナへの...
-
Delphiの型変換
-
SQLのデータで半角カナを全角に...
-
CString型からdouble型への変換
-
五十音の並べ替えsortを教えて...
おすすめ情報