2017-02-19 8 views

答えて

5

Stringのストリーム属性とストリーム属性'Writeを使用します。属性は、文字列オブジェクトのベアデータを出力するプロシージャを示します。

ファイルの最後の行は、行末で終了していないか、ファイル
$ cat Hello.txt 
Hello, World!$ 

注結果の

with Ada.Streams.Stream_IO; 

procedure Write_Appending is 

    use Ada.Streams.Stream_IO; 

    F : File_Type; 

    procedure Write_Hello is 
    begin 
     String'Write (Stream (F), "Hello, "); 
    end Write_Hello; 

    procedure Write_World is 
    begin 
     String'Write (Stream (F), "World"); 
    end Write_World; 

begin 
    Create (F, Name => "Hello.txt"); 
    Write_Hello; 
    Write_World; 
    Close (F); 

    -- forgot "!", append it at the end of the file. 
    Open (F, Mode => Append_File, Name => "Hello.txt"); 
    Character'Write (Stream (F), '!'); 
    Close (F); 
end Write_Appending; 

Current_Outputに書き込む場合は、Ada.Text_IO.Text_StreamsLRM A.12.2)と考えてください。

+0

甘い!今は逆の問題がありますが、連続して1行に書き込むのではなく、キャリッジリターンを実行するにはどうすればよいですか? XD – Numnumberry

+0

'Character'Write'がそれを行います。 CRは 'Character'型の定位置(' 'Pos'')を持っているので、その位置で' 'Value''を使うことは出力にCRを加える一つの方法です。より古典的な名前は、陳腐化パッケージ 'ASCII'から' ASCII.CR'です。 – B98

+0

私はそれも考えていましたが、私のコードをheres:write( "luck"); \t Open(F、Append_File、 "Hello.txt"); \t Character'Write(Stream(F)、ASCII.CR); \t閉じる(F);テキストファイルでは何も起こりませんが、何度も走ったときに運が一つの行に表示されているのを除いて、私は何か間違っているかもしれません – Numnumberry

2

はい。 Ada.Text_IO以外のI/Oパッケージを使用してください。 1つのオプションは、適切な文字タイプでインスタンス化された汎用パッケージAda.Direct_IOを使用することです。

関連する問題