■お題
条件を満たす行を取り除く(問題出典:どう書く?org)
- 問題詳細 -
条件を満たす行を取り除く(問題出典:どう書く?org)
- 問題詳細 -
ファイルから1行ずつ読み込み、"#"で始まる行だけを取り除いてファイルに出力するコードを書いてください。
サンプル入力
hello!
# remove this
# don't remove this
bye!
サンプル出力
hello!
# don't remove this
bye!
■解答例
ファイルのオープンの仕方、1文字目の判定ができればよいですね。
読込むファイルデータは、Sample.txtとして上記サンプルを同一フォルダ内に保存しています。
では、コードです。
5行目:Freefileを使うことでダブりなくファイル識別番号を割り当てる
7行目:変数 Oneline は、ファイルを開き1行のデータを受取る用
8行目:ファイルを開く
9行目:ファイルの最終行でなければループを続ける
10行目:ファイルの1行データをOneLineに格納する
11行目:Left関数で1行の最初の文字が#でなければ出力する
12行目:繰り返し
13行目:ファイル閉じる
実行結果
-----------------------------
hello!
# don't remove this
bye!
-----------------------------
【別の方法】
最初の1文字目を判定する別の方法としてASC関数を使う方法がありますね。
ASC関数は、与えられた文字列の最初の文字のコードを返す関数です。
いちいち、1文字目とか指定する必要がありません。
具体的には・・・
If Asc(OneLine) <> 35 Then Debug.Print OneLine
でOKです。
ASC関数で1行目のデータを受取り1文字目が#の時は35を返すので
35じゃない時は、出力する。という風です。
ファイルのオープンの仕方、1文字目の判定ができればよいですね。
読込むファイルデータは、Sample.txtとして上記サンプルを同一フォルダ内に保存しています。
では、コードです。
Option Explicit Sub main() Dim FH As Integer FH = FreeFile Dim OneLine As String Open "Sample.txt" For Input As #FH Do Until EOF(FH) Line Input #FH, OneLine If Left(OneLine, "1") <> "#" Then Debug.Print OneLine Loop Close #FH End Sub4行目:変数 FH は、ファイル識別番号を格納する用
5行目:Freefileを使うことでダブりなくファイル識別番号を割り当てる
7行目:変数 Oneline は、ファイルを開き1行のデータを受取る用
8行目:ファイルを開く
9行目:ファイルの最終行でなければループを続ける
10行目:ファイルの1行データをOneLineに格納する
11行目:Left関数で1行の最初の文字が#でなければ出力する
12行目:繰り返し
13行目:ファイル閉じる
実行結果
-----------------------------
hello!
# don't remove this
bye!
-----------------------------
【別の方法】
最初の1文字目を判定する別の方法としてASC関数を使う方法がありますね。
ASC関数は、与えられた文字列の最初の文字のコードを返す関数です。
いちいち、1文字目とか指定する必要がありません。
具体的には・・・
If Asc(OneLine) <> 35 Then Debug.Print OneLine
でOKです。
ASC関数で1行目のデータを受取り1文字目が#の時は35を返すので
35じゃない時は、出力する。という風です。
0 件のコメント:
コメントを投稿