2017-02-19 10 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_Streams (LRM A.12.2)을 고려하십시오.

+0

달콤한! 이제 반대의 문제가 생겼습니다. 연속적으로 한 줄에 쓰는 대신 캐리지 리턴을 어떻게 수행합니까? XD – Numnumberry

+0

'Character'Write'이 그것을 할 것입니다. CR은 고정 된 서수 위치 (''Pos'')를'Character' 유형으로 가지므로, 그 위치와 함께 'Value'를 사용하는 것은 출력에 CR을 추가하는 한 가지 방법입니다. 좀 더 전통적인 이름은'ASCII' 패키지의'ASCII.CR'이다. – B98

+0

나는 그것도 생각했다. 그러나 내 코드를 heres : write ("luck"); \t 열기 (F, Append_File, "Hello.txt"); \t Character'Write (Stream (F), ASCII.CR); \t 닫기 (F); 텍스트 파일에서 행운을 제외하고는 한 줄에 여러 줄을 인쇄했을 때 아무런 일도 일어나지 않습니다. – Numnumberry

2

예. Ada.Text_IO이 아닌 다른 I/O 패키지를 사용하십시오. 한 가지 옵션은 Ada.Direct_IO이라는 일반 패키지를 적절한 문자 유형으로 인스턴스화하는 것입니다.