comp.lang.ada
 help / color / mirror / Atom feed
* Weird behavior of Get character with trailing new lines.
@ 2023-09-22 19:30 Blady
  2023-09-22 19:52 ` Niklas Holsti
  2023-09-22 20:05 ` Jeffrey R.Carter
  0 siblings, 2 replies; 10+ messages in thread
From: Blady @ 2023-09-22 19:30 UTC (permalink / raw)


Hello,

I'm reading a text file with Get character from Text_IO with a while 
loop controlled by End_Of_File.

% cat test_20230922_get_char.adb
with Ada.Text_IO; use Ada.Text_IO;
procedure test_20230922_get_char is
    procedure Get is
       F : File_Type;
       Ch : Character;
    begin
       Open (F, In_File, "test_20230922_get_char.adb");
       while not End_Of_File(F) loop
          Get (F, Ch);
          Put (Ch);
       end loop;
       Close (F);
       Put_Line ("File read with get.");
    end;
begin
Get;
end;



All will be well, unfortunately not!

Despite the End_Of_File, I got an END_ERROR exception when there are 
several trailing new lines at the end of the text:

% test_20230922_get_char
with Ada.Text_IO; use Ada.Text_IO;procedure test_20230922_get_char is 
procedure Get is      F : File_Type;      Ch : Character;   begin 
Open (F, In_File, "test_20230922_get_char.adb");      while not 
End_Of_File(F) loop         Get (F, Ch);         Put (Ch);      end 
loop;      Close (F);      Put_Line ("File read with get."); 
end;beginGet;end;

Execution of ../bin/test_20230922_get_char terminated by unhandled exception
raised ADA.IO_EXCEPTIONS.END_ERROR : a-textio.adb:517

The code is compiled with GNAT, does it comply with the standard?

A.10.7 Input-Output of Characters and Strings
For an item of type Character the following procedures are provided:
procedure Get(File : in File_Type; Item : out Character);
procedure Get(Item : out Character);
After skipping any line terminators and any page terminators, reads the 
next character from the specified input file and returns the value of 
this character in the out parameter Item.
The exception End_Error is propagated if an attempt is made to skip a 
file terminator.

This seems to be the case, then how to avoid the exception?

Thanks, Pascal.



^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2023-09-26  5:53 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-09-22 19:30 Weird behavior of Get character with trailing new lines Blady
2023-09-22 19:52 ` Niklas Holsti
2023-09-22 20:05 ` Jeffrey R.Carter
2023-09-23  7:02   ` J-P. Rosen
2023-09-23  8:39     ` Niklas Holsti
2023-09-23  9:25       ` Dmitry A. Kazakov
2023-09-23 14:03         ` Niklas Holsti
2023-09-24  7:50           ` Dmitry A. Kazakov
2023-09-25 19:55       ` Blady
2023-09-26  5:53     ` Randy Brukardt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox