Copyright (c) Hyperion Entertainment and contributors.

Difference between revisions of "AmiWest Lesson 3"

From AmigaOS Documentation Wiki
Jump to navigation Jump to search
Line 31: Line 31:
 
The C startup code will auto-magically create these standard streams for you and assign them to the DOS-provided streams mentioned above.
 
The C startup code will auto-magically create these standard streams for you and assign them to the DOS-provided streams mentioned above.
   
Whether you use '''printf()''' or '''IDOS->Printf()''' they will both ultimately end up using the Output stream. However, this doesn't mean you can just mix and match to taste. The reason is that each of these calls are buffered. The C library could use its own buffering or it could depend on DOS buffering. Programmers should not assume one or the other and instead should be consistent in their choice of API.
+
Whether you use '''printf()''' or '''IDOS->Printf()''' they will both ultimately end up using the DOS Output stream. However, this doesn't mean you can just mix and match to taste. The reason is that each of these calls are buffered. The C library could use its own buffering or it could depend on DOS buffering. Programmers should not assume one or the other and instead should be consistent in their choice of API.
   
 
== File Input and Output ==
 
== File Input and Output ==

Revision as of 23:09, 16 October 2012

AmiWest Lesson 3: Input and Output

Debug Output

One of the first things you will need is some way to output text for debugging purposes. Exec has a simple function which is provided for this purpose and it is used as follows:

IExec->DebugPrintF("my debug message\n");

The text may go to the default serial port, a debug buffer or even a console window via a tool called Sashimi.

More information about this debugging facility can be found at Debug Logging and Redirecting Debug Output.

Console Input and Output

There are many options when it comes to choosing an API for console input and output. This can really confuse beginnners so I thought I would try and briefly explain the fundamentals.

All console input and output is done via DOS streams. That means whatever fancy interface is on the surface it all boils down to working with DOS streams. Three different streams are available for every Process:

  1. Input
  2. Output
  3. ErrorOutput

Usually, Output and ErrorOutput will share the same stream but this is not a requirement.

The ISO C standard also defines input and output streams:

  1. stdin
  2. stdout
  3. stderr

The C startup code will auto-magically create these standard streams for you and assign them to the DOS-provided streams mentioned above.

Whether you use printf() or IDOS->Printf() they will both ultimately end up using the DOS Output stream. However, this doesn't mean you can just mix and match to taste. The reason is that each of these calls are buffered. The C library could use its own buffering or it could depend on DOS buffering. Programmers should not assume one or the other and instead should be consistent in their choice of API.

File Input and Output

File input and output has many APIs to choose from. At the most basic level you have IDOS->Read() and IDOS->Write().

DOS Input and Output

GUI Input and Output