inumber - request and return an integer value


#include <stdio_p.h>

inumber (str, ival)
char *str;
int *inval;


inumber writes the string pointed to by str onto the standard output device. This string can be a prompt requesting the user to type an integer value. If no prompt is desired str should be NULL. inumber reads a line from the standard input device, and looks for an optional string of tabs and spaces, then an optional sign, then a string of digits followed by tabs, spaces, or a newline. If it finds this pattern it converts it to an integer, returns the value in the address passed as ival, and returns 1. If the first digit in the string is 0, the string is interpreted in octal; otherwise, it is interpreted in decimal. If inumber encounters an end-of-file or a line consisting only of spaces, tabs, or a newline it returns 0. If it fings neither of these patterns it repeats the prompt and tries to recognize the next input line, continuing to do so until it finds a valid inuput string.


The following illustrates a call to inumber:
integer stat, sess;
if((stat = ("session number", &sess) == -1;
fprintf(stderr,"inumber error\n");
if((stat == 0)
sess = DEFAULT;
A possible interaction given the above is shown below:
session number: 2a
session number :2




If inumber cannot write the prompt string to standard output it prints an error message to standard error and returns -1.