mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-24 17:04:19 +00:00
Upload
Digital Research
This commit is contained in:
240
CPM OPERATING SYSTEMS/CPM 68K/1.0X SOURCES/v101/test/stream3.c
Normal file
240
CPM OPERATING SYSTEMS/CPM 68K/1.0X SOURCES/v101/test/stream3.c
Normal file
@@ -0,0 +1,240 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
/* */
|
||||
/* */
|
||||
/* This program tests the printf-scanf family of routines */
|
||||
/* contained in the C run-time library. */
|
||||
/* Tests: fprintf,sprintf,printf,puts,scanf,sscanf, */
|
||||
/* fscanf. */
|
||||
/* */
|
||||
/* 8-12-82 . FMB. */
|
||||
/* */
|
||||
/*****************************************************************************/
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#define C "Clarence" /* An empty file. */
|
||||
#define READMODE "r" /* RO files */
|
||||
#define CREATF "w" /* New files */
|
||||
#define APPMODE "a" /* Append files */
|
||||
#define ASCYES 0 /* Ascii file */
|
||||
#define BINARY 1 /* Binary file */
|
||||
#define BUFFMAX 100 /* Maximum buffer length */
|
||||
|
||||
main()
|
||||
{
|
||||
FILE *filstream,filstream2; /* Point to file buff*/
|
||||
BYTE *buff1,*buff2,*buff3,*buff4; /* Memory buffers */
|
||||
WORD returnw; /* Return values */
|
||||
BOOLEAN goahead ; /* Prevents traffic jams.*/
|
||||
WORD nitems,savitems; /* # items read */
|
||||
BYTE dum_d, a; /* Vars for scanf family */
|
||||
LONG *dum_b[2],*dum_c[6],*c[10]; /* " */
|
||||
BYTE *name,*dum_a,*sav_a; /* " */
|
||||
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
/* Begin Program */
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
/* Print program header */
|
||||
printf("\n\n\n ********************************************\n");
|
||||
printf(" Begin C Test # 3.\n\n");
|
||||
printf("%10s \n\n","First test malloc on the buffers...................");
|
||||
|
||||
/* Init breaker */
|
||||
goahead = TRUE;
|
||||
|
||||
|
||||
/*********************/
|
||||
/* This section tests*/
|
||||
/* memory allocation.*/
|
||||
/*********************/
|
||||
|
||||
printf("Testing memory allocation..........................\n");
|
||||
/*********************/
|
||||
/* Allocate buffer */
|
||||
buff1 = malloc(BUFFMAX); buff2 = malloc(BUFFMAX); /* space. */
|
||||
buff3 = malloc(BUFFMAX); buff4 = malloc(BUFFMAX); /*********************/
|
||||
dum_a = malloc(10); name = malloc(50);
|
||||
if ((buff1 && buff2 && buff3 && buff4 && dum_a && name) == NULL)
|
||||
{
|
||||
printf("Malloc failed on buffer allocation.\n\n");
|
||||
goahead = FALSE;
|
||||
} /*********************/
|
||||
/* This section tests*/
|
||||
/* fscanf and sscanf */
|
||||
/* with an arbitrary */
|
||||
/* delimiter. */
|
||||
/*********************/
|
||||
|
||||
/*********************/
|
||||
/* Now open a file */
|
||||
/* for testing */
|
||||
filstream = fopen(C,CREATF,ASCYES); /*********************/
|
||||
if (filstream == NULL )
|
||||
{
|
||||
printf("File open failed.Stop here.\n\n");
|
||||
goahead = FALSE;
|
||||
}
|
||||
else /*********************/
|
||||
/* Coast is clear.Go */
|
||||
/* and test fscanf. */
|
||||
{ /*********************/
|
||||
printf("After fopen, fp is %X.\n",filstream);
|
||||
printf("Testing Fscanf.................................\n");
|
||||
printf("Please input file material ending with a \'!\'.\n");
|
||||
savitems = nitems = fscanf(stdin,"%[^!]%*c",buff3);
|
||||
/*********************/
|
||||
/* Where ! is the */
|
||||
/* file delimiter & */
|
||||
/* c gobbles up the !*/
|
||||
if (nitems == NULL ) /*********************/
|
||||
{
|
||||
printf("\nfscanf failed on terminal input.\n\n");
|
||||
goahead = FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("Testing fprintf...................\n");
|
||||
/*********************************/
|
||||
/* Now let's try fprintf to move */
|
||||
/* this stuff into a file stream */
|
||||
/*********************************/
|
||||
nitems = fprintf(filstream,"%[^.]%*c",buff3);
|
||||
fputc('\0',filstream);
|
||||
printf("After fprintf,fp is %X .\n",filstream);
|
||||
if (nitems == NULL )
|
||||
printf("Fprintf didn\'t make it.\n\n");
|
||||
}
|
||||
}
|
||||
|
||||
if (goahead) /*********************/
|
||||
{ /* Close file, open */
|
||||
printf("Testing reopen.................\n"); /* it,and read from */
|
||||
filstream = freopa(C,READMODE,filstream); /* it with fscanf. */
|
||||
printf("Testing fscanf........................\n");
|
||||
savitems = fscanf(filstream,"[^.].",buff4); /* Then use sscanf to*/
|
||||
printf("Testing sscanf........................\n");
|
||||
nitems = sscanf(buff4,"%s",stdout); /* echo to screen. */
|
||||
} /*********************/
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/* This section tests scanf and sprintf with 3 kinds of variables. */
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
if (goahead )
|
||||
{
|
||||
/* Test scanf with dum_ var's. */
|
||||
printf("Please enter data for scanf test. For the first item \n");
|
||||
printf("type in a word. \n");
|
||||
printf("Next,type in one 5-digit decimal and one 2-digit \n");
|
||||
printf("hex number,with optional spaces in between items.\n");
|
||||
|
||||
nitems = scanf("%s%5D%2x",dum_a,dum_c,dum_b);
|
||||
|
||||
/* At this point, dum_a should have a 1-word string ending with a null.*/
|
||||
/* Dum_b should have 2 hex digits,and dum_c should have a 5-place decimal #*/
|
||||
|
||||
if (nitems != 3)
|
||||
{
|
||||
printf("Scanf returned bad item count.\n");
|
||||
printf("Nitems was %d .\n",nitems);
|
||||
} /*********************/
|
||||
else /*Go ahead and test */
|
||||
{ /* sprintf. */
|
||||
/*********************/
|
||||
printf("Testing sprintf...................\n");
|
||||
buff2 = sprintf(buff2,"%s %5D %2x ",dum_a,*dum_c,*dum_b);
|
||||
if (buff2 == NULL)
|
||||
printf("\nSprintf didn\'t work.");
|
||||
else
|
||||
printf("\nEcho = %s\n",buff2);
|
||||
}
|
||||
} /*********************/
|
||||
if (goahead) /* Now test scanf */
|
||||
{ /* with printf. */
|
||||
/*********************/
|
||||
|
||||
printf("\n%c%c %s%c %c \n",'*',' ',"Please enter : ",'*',' ');
|
||||
printf("%5c%s%5c\n", ' ',"One 2-digit decimal number ,",' ');
|
||||
printf("%5c%s%c\n",' ',"one 6-digit decmal number,",' ');
|
||||
printf("%5c%s%c\n",' ',"and one filename.",' ');
|
||||
printf("%5c%s%5c",' ',"Intervening spaces are ok.CR's not allowed.\0",' ');
|
||||
printf("\n\n"); /*********************/
|
||||
/*Get data from screen*/
|
||||
nitems = scanf("%2D%6D%s",dum_c,c,name); /*********************/
|
||||
/*********************/
|
||||
if (nitems != 3) /* See if it flopped */
|
||||
printf("Scanf didn\'t make it.\n"); /*********************/
|
||||
|
||||
/*********************/
|
||||
/* Should we bother */
|
||||
if (goahead) /* trying to read it */
|
||||
{ /* back? */
|
||||
printf("Echoing values ................\n"); /*********************/
|
||||
printf("The 6-digit decimal number is : %D .\n",*c);
|
||||
printf("The 2-digit decimal number is : %D .\n",*dum_c);
|
||||
printf("The name is : %s .\n",name);
|
||||
|
||||
printf("Testing field widths ...............\n");
|
||||
printf("This one should be 2 out of 6 digits : %40.2D\n",*c);
|
||||
printf("This one should move back some : %20.2D\n",*c);
|
||||
printf("This one should move back completely: %-20.2D\n",*c);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
/* This section tests puts by displaying contents of memory buffer. */
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
if (goahead )
|
||||
{
|
||||
printf("Testing puts on first file input..........................\n");
|
||||
if (puts(buff3) == FAILURE )
|
||||
printf("\nPuts didn\'t echo buff to screen.\n");
|
||||
|
||||
}
|
||||
|
||||
/************************************************************************/
|
||||
|
||||
/* This section tests fprintf (with an append) and printf. */
|
||||
|
||||
/************************************************************************/
|
||||
|
||||
if (goahead )
|
||||
{
|
||||
printf("Testing fprintf.................................\n");
|
||||
filstream = fopen("Ace",CREATF); /*********************/
|
||||
if (fprintf(filstream,"%s\0",buff2) == FAILURE)/* Put buff2 into new*/
|
||||
printf("Couldn\'t write with fprintf.\n\n");/*file with fprintf */
|
||||
else /*********************/
|
||||
{
|
||||
printf("Testing Fscanf..............................\n");
|
||||
filstream = freopen("Ace",READMODE,filstream);
|
||||
nitems = fscanf(filstream,"%s",buff1); /*********************/
|
||||
printf("Echoing..... %s \n",buff1); /* Reopen and copy to*/
|
||||
} /* Buff1. Echo to */
|
||||
/* screen. */
|
||||
} /*********************/
|
||||
printf("\n\t\t\tEnd Test # 3\n");
|
||||
|
||||
} /* End program */
|
||||
|
||||
Reference in New Issue
Block a user