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で質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) VScodeでpythonプログラムの関数を実行したい 2 2022/07/13 19:24
- C言語・C++・C# c言語の問題です 2 2023/07/21 10:51
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- Excel(エクセル) 【マクロ】同じフォルダ内にある複数ブックから1つのブック内の1シートにデータを集めたい 6 2022/09/28 18:16
- その他(プログラミング・Web制作) Windowsのマクロプログラムで、こんなことできますか? 3 2022/06/28 14:30
- Excel(エクセル) フォルダ内のエクセルファイルを開かずにデータ採取する関数式 2 2022/12/22 22:15
- C言語・C++・C# 至急お願いします。C言語で.imgのファイルを読み込んで1バイトづつ出力するプログラムを作りたいので 3 2023/01/16 22:49
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
Dir関数で読み取り順を操作でき...
-
構造体配列の一部初期化!!!
-
VB6で、一次元配列と二次元配列...
-
VBAでMODE関数をつくる
-
VB.NETの配列とArrayListについ...
-
Excel2010のinputboxで複数デー...
-
C#でbyte配列から画像を表示さ...
-
定数配列の書き方
-
配列数とメモリの使用率
-
C#,繰り返し処理での最大値の取...
-
母親の血液中の胎盤遺伝
-
配列の要素がすべてカラかどう...
-
VB6でやると構造体の配列になる...
-
2次元配列の初期値
-
現在コピーされているものによ...
-
VBA Dowhile 判断条件に動的配...
-
VBA ReDim と ReDim Preserve ...
-
ACCESSであえてデータを配列形...
-
レコードセットの中身を配列に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
vba フィルター 複数条件 3つ以...
-
C#でbyte配列から画像を表示さ...
-
Excel2010のinputboxで複数デー...
-
エクセルでXY座標に並べられた...
-
構造体配列の特定のメンバーをF...
-
定数配列の書き方
-
コンボボックスのインデックス...
-
OutOfMemoryExceptionの回避策...
-
Dir関数で読み取り順を操作でき...
-
CheckBoxの配列化
-
構造体配列内の文字列検索のよ...
-
COBOLの基本的な事なので...
-
Redim とEraseの違いは?
-
VBAで配列引数を値渡しできない...
-
2次元配列の初期値
-
配列の中の最大値とそのインデ...
-
大量の変数を定義するにはどう...
-
VB6からの移行したいけど、VB.N...
-
VB6のメモリ解放に関して
おすすめ情報