• ベストアンサー

BASICでテキストファイル内の文字列操作

MMLの方言を修正するために、MMLの中の#を+に変換する必要がありました。これをすべて手動で行うとどれだけ時間がかかるかわからないので、N88BASICでプログラムを作りたいのですが、どうやったらいいでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

メモ帳なんかで置換した方が手っ取り早いと思いますが。 エラーチェックとか動作確認とかしないですが、N88BASICなら多分、 1000 OPEN "inp.mml" FOR INPUT AS #1 'ファイル1を読み取りオープン 1010 OPEN "out.mml" FOR OUTPUT AS #2 ' ファイル2を書き出しオープン 1015 ' 1020 IF EOF(1)=-1 THEN GOTO 1060 ' ファイル末尾なら1060 1030 INPUT #1, R$ ' R$に1行読み込み 1040 GOSUB 1100 ' R$をW$にコピー、但し#は+に置換する処理を呼び出し 1050 PRINT #2, W$ ' W$を1行書き出し 1050 GOTO 1020 ' ループ 1060 ' 終了処理 1070 CLOSE #1 1080 CLOSE #2 1090 END 1100 ' R$をW$にコピー、但し#は+に置換する処理 1110 N=LEN(R$) ' R$の文字列長さを取得 1120 W$="" ' W$をクリア 1130 FOR I=1 TO N ' 文字数分繰り返し 1140 IF MID(R$,I,1)="#" THEN ' "#"か? 1150 W$=W$+"+" '"+"に置換 1160 ELSE 1170 W$=W$+MID(R$,I,1) ' そのままコピー 1180 NEXT I 1190 RETURN だとか?

ayumi9821
質問者

お礼

ありがとうございます。

その他の回答 (1)

  • f272
  • ベストアンサー率46% (8019/17138)
回答No.1

プログラムなど作らなくても,標準的なエディタでMMLファイルを開いて,置換コマンドで文字を置換して,保存すればOK。

ayumi9821
質問者

お礼

それもそうですが、せっかくなら勉強をかねてと思い。

関連するQ&A

  • 全角・半角が混じったテキストで20文字毎に改行を入れたい

    perl5.8.5でCGIのプログラムを作っています。 全角・半角が混じったテキストで20文字毎に改行を入れたいと思っています。 プログラムの文字コードはEUCで書いています。 (変換前)12345678901234567890123456789012345678901234567890    ↓ (変換後)12345678901234567890\n12345678901234567890\n1234567890 という感じです。 いろいろな方法で実現できると思ったのですが スマートな書き方を教えていただけますでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • VC++2005 テキストボックス

    現在、VC++2005でプログラムをしているのがどうしてもエラーが出てしまうのでわかる方がいればよろしくお願いします。 プログラムとしては、テキストボックスの中のデータが空だった場合にはある処理を行うというものを作っています。 プログラム本体は、 if(textBox1==NULL) { label1->Text="データがありません\n"; } です。 エラーメッセージは、 エラー 1 error C2446: '==' : 'int' 型から'System::Windows::Forms::TextBox ^' 型への変換ができません。 というメッセージが出てしまいます。 このエラーは、型変換が違っているということのエラーなのでしょうか?どのように修正するとよいのでしょうか? 説明などがとても下手かもしれませんが、よろしくお願いします。

  • 文字列から文字を探す

    以下のプログラムです。 #include <stdio.h> main () { char s[]="I love cat and dog."; char c='a'; char *p=s; int n=0; printf("\"%s\"の中から\'%c\'を探します。",s,c); while(*p != '\0') { if(*p == 0) { printf("%d文字目で発見しました。\n",p-s+1); n++; } p++; } if(n == 0) printf("1つも見つかりませんでした。\n"); else printf("全部で%d個見つかりました。\n",n); } C言語の本で勉強しています。 ・p-s+1の意味がわかりません。 ここには何が割り当てられているのでしょうか? ・*pとpの違いもあいまいです。 ・\"%s\"は「"」を印刷するためには必要なのでしょうか? どう質問していいのかもわからないのですが、よろしくお願いします。

  • N88BASICのバイナリデータをテキストに変換

    N88BASICで作成したプログラムを読みたいのですが、バイナリで保存しており、現在のWindows環境(Windows2000)では読めません。 N88BASICのバイナリデータをテキストデータに変換する方法を知っている方がいらっしゃれば教えてください。 有料で取り扱ってくれるところはあるようなのですが、できればタダで変換したいなぁと考えています。 テキスト形式(アスキー?)に変換できればよいだけです。Windowsで動くようにする等は、既に知っていますので。。。 よろしくお願い致します。

  • 文字列のエンコードについて

    例えば以下のコードで日本人がターゲットのサイトを作ったときにエンコードがutf8以外ってありますか?idなどもutf8でなんとかなるのになぜ他の文字コードは必要なのですか? //SJISに変換 $str = "私のidはrxxdtggb63332224667です。"; $result = mb_convert_encoding($str, "SJIS"); echo $result . "\n"; //UTF-8に変換 echo mb_convert_encoding($str, "UTF-8"); //SJISに変換 $str = "gcdddyyghgcc.jpg"; $result = mb_convert_encoding($str, "SJIS"); echo $result . "\n"; //UTF-8に変換 echo mb_convert_encoding($str, "UTF-8");

    • ベストアンサー
    • PHP
  • Javaプログラムからファイル操作

    教えてください。 Javaプログラムであるシェルのスクリプトファイルを呼び出します。 そのスクリプトファイルが他のサーバからファイルを取得してくるなどの操作をします。 SSHでLinuxにログインし、スクリプト自体を手動で実行したら問題無いのですが プログラムから実行する時に”許可がありません”などのエラーが表示され、失敗します。 chownやchmod、もしくは何か特定のユーザ(例:rootユーザ)をプログラムの中で指定して 実行する必要があるのでしょうか? もしくは何かLinux上で設定変更する必要があったりするのでしょうか? よろしくお願い致します。

    • ベストアンサー
    • Java
  • BASIC

    BASICを始めたのですが、つくったプログラムをコンパイルするソフトを探しています。 今僕は、N88BASICでプログラムを書いています。

  • 【PC98x1/国民機】fileconv

    fileconv を用いて、MS-DOS用となっている、「プログラム」をN88BASIC用の「プログラム」に変更します。 その際に、ドライブ名を尋ねてくるのですが、ドライブは、E:(MS-DOS) 用のテキストプログラムが書いて在ります。 此の儘だと、N88-BASIC用のプログラムに変更出来ないので、F:ドライブに、N88-BASICの空きのフロッピーディスクを挿入します。 ところで、 抑、F:ドライブはMS社用のフォーマット形式ですから、N88BASIC用のフォーマット形式に改める必要性が発生します。 ですので、問題なのが、どのようにしたら、N88BASIC用のフォーマット形式に至るのか、コマンドが分からないのです。 ※ 因みに小生は、N88-BASIC Version 6.1 (MS-DOS 版)を使っています。

  • ファイル出力で文字に

    現在プログラムからhtmlファイルを出力するプログラムを考えているのですが、出力する中で文字として「"」を出力したいのですが、どのようにしたらよいのでしょうか? たとえば "<form action="sendCheck.jsp" method="post">\n"; というのを表示したいのですが、 これでは      "<form action="sendCheck.jsp" method="post">\n";      ↑        ↑        ↑    ↑   ↑  ↑      ←---------→         ←----→    ←→ というように認識されてしまいうまくいきません。 どのようにしたらよいのでしょうか?

  • 文字列から読み込んだ時刻の操作について。

    こんにちは。お時間のある時にお願いします。 文字列表記された時刻を、ある特定のフォーマットに変換し、尚且つタイムゾーンの計算をして、ソートさせるプログラムを組んでいます。 時間の加減算には、Calenderクラス、 String型からDate型に変換するには、SimpleDateFormatクラスが良さそうだ、と思って触っています。 ----- String strPreTime = "Sun, 11 Dec 2005 03:00:38 +0900"; //変換後時刻フォーマット -> 2005-12-11T03:00:38+0900 SimpleDateFormat sdf = new SimpleDateFormat(); sdf.setDateFormatSymbols(new DateFormatSymbols(Locale.US)); //日付の出力形式を設定 sdf.applyPattern("EEE, d MMM yyyy HH:mm:ss Z"); Date dat = sdf.parse(strPreTime); System.out.println("test1: "+dat); sdf.applyPattern("yyyy-MM-dd'T'HH:mm:ssZ"); String dat2 = sdf.format(dat); System.out.println("test2: " +dat2); ----- 出力結果: test1: Sun Dec 11 03:00:38 JST 2005 test2: 2005-12-11T03:00:38+0900 となりますが、test1の出力結果が、sdf.applyPattern("EEE, d MMM yyyy HH:mm:ss Z");で指定した出力形式になっておらず、頭を悩ませています。 どこを直せば、指定した通りの出力形式になるのか、教えてください。 また、Date型の時にタイムゾーンだけを抽出する、というのはどうしたらいいでしょうか?

    • ベストアンサー
    • Java

専門家に質問してみよう