重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

文字列strを次の規則により変換して表示する関数

str_crypt( char str[] ) {......} を作成するというC言語の問題がわかりません・・・。

教えてください。

<変換規則>

英字ならばアルファベットでそのすぐ前の英字に(ただしAはZに,aはzに)、
数字ならばその直後の数字に(ただし9は0に)、
特殊文字はそのまま。




変換前:gifu University, Dept. of Information Engineering, 2008
変換後:hjgv Tmhudqrhsx, Cdos. ne Hmenqlzshnm Dmfhmddqhmf, 3119

A 回答 (6件)

str_crypt関数に渡している引数strが



> 変換前:gifu University, Dept. of Information Engineering, 2008

これに対応していることはわかりますか?
strから1文字ずつ取り出して、英字・数字・それ以外の判定はできますか?

この回答への補足

どうやって、英字と数字他を判定すればいいのでしょうか??
ifを使うんですよね??

補足日時:2008/06/24 23:29
    • good
    • 0

いろんなやり方があると思いますが、僕なら変換前と変換後のテーブルを作ります。



char henkan[2][]=
{"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
"1234567890ZABCDEFGHIJKLMNOPQRSTUVWXYzabcdefghijklmnopqrstuvwxy"};
    • good
    • 0

文字コードが不明なので


char u_alpha[27] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','A'};
for (i = 26; i > 0; i--)
{
if (*str == u_alpha[i])
{
*str = u_alpha[i - 1];
break;
}
}
このような処理を小文字と数字(数字は逆方向)でもやればいいでしょう
    • good
    • 0

処理系の指定が内容なので...



A~Z, a~zの値が連続しているとは限らない点が、ある意味で引っ掛け問題ですね。
    • good
    • 0

> どうやって、英字と数字他を判定すればいいのでしょうか??



スペシャル・ヒント。
is何とか、という標準関数(複数あります)について調べてみてください。
    • good
    • 0

>どうやって、英字と数字他を判定すればいいのでしょうか??


そのものズバリの標準関数があるので探しましょう。
    • good
    • 0

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