/*
* Example of scanf
* this fixes the bug in the previous program
*
* Matt Bishop, ECS 36A
*
* April 22, 2024
* first version
*/
#include <stdio.h>
#include <string.h>
/*
* and we're off!
*/
int main(void)
{
int xint; /* for reading an integer */
float yfloat; /* for reading a floating point number */
int retval; /* return value from scanf */
int c; /* used to eat rest of line */
char buf[100]; /* input buffer */
/*
* loop until asked to quit
*/
do{
/* prompt for input */
printf("> ");
/* split the scanf into several: */
/* first reads the integer */
if ((retval = scanf("%d", &xint)) == 1){
/* now see if a float or "xxx" follows */
if (scanf("%f", &yfloat) == 1){
retval = 2; /* read int, float */
printf("Got %d, %f\n", xint, yfloat);
}
else if (scanf("%s", buf) == 1 && strcmp("xxx", buf) == 0){
retval = 1;
printf("Got %d and xxx\n", xint);
}
else{ /* neither -- report the integer */
retval = 1;
printf("Got %d\n", xint);
}
}
else if (retval != EOF){ /* not integer *or* EOF */
retval = 0;
printf("Didn't get anything\n");
}
/* print what scanf returned */
printf("RETVAL = %d\n", retval);
/* eat the rest oif the line */
while((c = getchar()) != '\n' && c != EOF)
;
} while(retval != EOF);
/*
* goodnight, Irene :)
*/
return(0);
}
|
ECS 36A, Programming & Problem Solving Version of April 2, 2024 at 12:13PM
|
You can get the raw source code here. |