printf and scanf

Discuss PocketC for CE (including Desktop Edition)

Postby maurub on Thu May 31, 2001 5:50 pm

Hey: I have just started to work with PocketC. How can I get into work with interactions with computer with functions like Printf and scanf? Help me.
Posts: 17
Joined: Thu May 31, 2001 5:44 pm
Location: Mexico

Postby wolfgang on Sun Jun 03, 2001 6:20 am

There is no printf or scanf in PocketC.
Use puts (or putsl) instead of printf.
Use gets instead of scanf.
(Refer to the built-in PocketC library functions description to get the exact functionality of these functions).

Composing music on the PocketPC! -
Posts: 281
Joined: Tue Dec 12, 2000 4:22 am
Location: USA

Postby starfire151 on Mon Jun 04, 2001 12:43 am

While I understand that the current version of PocketC does not support printf or scanf instructions, they are very useful instructions for creating formatted input and output.

Maybe someone has developed some routines to do these functions???
Posts: 2
Joined: Sun Jun 03, 2001 9:34 pm

Postby guy on Wed Jun 06, 2001 3:12 pm

I've just written a PocketC implementation of printf, sprintf and fprintf. The syntax is nearly the same as the standard library routines:

int count = sprintf(string * result, string format,...) ;
int count = printf(string format,...) ;
int count = fprintf(int handle, string format,...) ;

The format string supports the standard format characters, flags and fields.

The functions use string parameters instead of char* parameters, and sprintf uses a string* to return its value.

Just testing the routines now.

The code contains an interesting fudge to allow variable argument lists to work.

I'll post the files on the pcform page once they're ready.

Hope to do scanf functions next.

PocketC CE API interface:
PCForm and CE API forum:
Posts: 879
Joined: Thu Dec 07, 2000 8:58 am
Location: United Kingdom

Postby guy on Thu Jun 07, 2001 7:11 am

Well the functions work, but PocketC breaks the stack on the return from the function.

For some reason the compiler does compile time binding for the stack frame unwind, unlike most other compilers which use a runtime binding to restore the stack to the state that it was in before the call.

This means that the runtime only knows about the fixed parameters for the function, not the trailing variable argument list. It also leaves the argument pointer in the wrong place at the start of the function, so you have to backtrack through the stack to get back to the start of the argument list.

I'll get onto Kevin to see whether this can be changed.

PocketC CE API interface:
PCForm and CE API forum:
Posts: 879
Joined: Thu Dec 07, 2000 8:58 am
Location: United Kingdom

Return to PocketC for CE

Who is online

Users browsing this forum: No registered users and 3 guests