No.3ベストアンサー
- 回答日時:
なんだか課題っぽい感じがするのですが・・・面白そうなので考えてみました。
データの文字は全角文字のみと考えてよろしいでしょうか?
ファイルをオープンし、1行ずつ読み込んで配列に格納し、配列の後ろから表示していくという考え方で作ってみました。
しかし全角文字(2バイト文字)なので、そのまま逆から表示しただけでは、まったく違う文字が表示されてしまうので、
1バイト目と2バイト目を入れ替える必要があります。
例)「あ」という文字を配列に格納すると・・・
配列の0番目:0x82
配列の1番目:0xA0
というふうに格納されます。
しかし、配列の後ろから表示した時に「あ」と表示されるには
配列の0番目:0xA0
配列の1番目:0x82
と格納されていなければならないので、その処理を入れなければなりません。
データがすべて2バイト文字ならば、配列の要素が偶数の時に1バイト目、奇数の時に2バイト目が必ずくるので、
1バイト目ならば、+1した場所に(上の例で言えば、配列の1番目)、
2バイト目ならば、-1した場所に(上の例で言えば、配列の0番目)入替えやればいいわけです。(わかりにくいかな?^^;)
その処理を行の終わり(改行文字の手前)まで繰り返して、printf文で配列の後ろから1文字ずつ表示していけば「あいうえお」が「おえういあ」と逆に表示されます。
1行終わったら、また1行読み込んでこの処理をファイルの終わり(EOF)まで繰り返せば、
希望どおりの結果になると思います。
・・・とまぁ、とりあえず考え方だけをアドバイスしたのでわかりにくい文章かもしれませんが、これをもとに自分の力で完成させてみてくださいね^^
不明な点があれば補足してください。
本当は専門家のarthurでした(自信ないから経験者・・(爆))
No.5
- 回答日時:
もし課題や大きなアプリケーションの一部などではないのならば、
Perlを使ったほうが早いと思います~。
DOSプロンプトから、
perl -e "print map{ ++$i; \"$i: $_\" } reverse <>;" TEST.DAT
だけでいいですよ。
No.4
- 回答日時:
あうっ、逆から表示を見落としていました、、、
まず、1-byte文字ずつ読んでShift-JISの日本語の
1バイト目に相当する文字であったらもう1文字
読んで、これが日本語の2バイト目に相当する文字
であればこの2バイトはこのままの順番で、この後に
今までの文字列を追加します。
Shift-JISコードの日本語は1Byte目にくるcharactor、
2Byte目にくるcharactorの範囲が決まっていますので、
このあたりで日本語か半角英数字かどうかを
比較しましょう。
または、日本語2Byteを1文字として文字単位で扱える
関数があるかもしれません。探してみましょう。
日本語Basic系(VBAなど)は結構装備してますよ。
No.2
- 回答日時:
あなたがどこからどの辺までわかっているのか知りたいです。
さすがにこれに全部答えるのには気が知れます。
どこかの学校の問題っぽいです。
TurboCを使っているということはDOS上ですよね。
DOSでは日本語にShift-JISという文字コートが使われており、そのコードの文字列を逆から操作するのは、非常に難しいことです。
日本語コードの部分をひっくり返さないようにしなければならないのですが、Shift-JISではどこが日本語なのかを区別するのが非常に困難です。
>~漢字データ(全角)を読み込み~
もし本当に、全角文字しか読み込まないのなら、forで1バイト走査して改行コードが見つかったら、後ろから2バイトずつ戻って別の配列に書き込んでいけば良いでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
構造体配列の特定のメンバーをF...
-
テキストボックの文字を一行ず...
-
C#でbyte配列から画像を表示さ...
-
定数配列の書き方
-
レコードセットの中身を配列に...
-
VB.NETにて、構造体へデータを...
-
CheckBoxの配列化
-
エクセルでXY座標に並べられた...
-
2次元配列の初期値
-
OutOfMemoryExceptionの回避策...
-
VBAで配列引数を値渡しできない...
-
構造体配列内の文字列検索のよ...
-
EXCELを使って、アクセスログを...
-
DBから取得した値を配列へ代入する
-
配列のペースト出力結果の書式...
-
COBOLの基本的な事なので...
-
POSTリクエストの投げ方
-
2次元配列でウォッチが出来ない
-
配列からのCSVファイルの作...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
C#でbyte配列から画像を表示さ...
-
vba フィルター 複数条件 3つ以...
-
エクセルでXY座標に並べられた...
-
Dir関数で読み取り順を操作でき...
-
Excel2010のinputboxで複数デー...
-
構造体配列の特定のメンバーをF...
-
Redim とEraseの違いは?
-
配列のペースト出力結果の書式...
-
COBOLの基本的な事なので...
-
大量の変数を定義するにはどう...
-
DBから取得した値を配列へ代入する
-
EXCEL VBAの課題です
-
VBScriptでCSVファイルを読み出...
-
VBAでMODE関数をつくる
-
配列の中の最大値とそのインデ...
-
定数配列の書き方
-
構造体配列内の文字列検索のよ...
-
CheckBoxの配列化
-
Excelのメモリ(配列)の上限は2G...
おすすめ情報