home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Between Heaven & Hell 2
/
BetweenHeavenHell.cdr
/
100
/
96
/
lej_lib.c
< prev
next >
Wrap
Text File
|
1983-10-27
|
8KB
|
302 lines
/* Larry Jordan's sample c program functions */
#include <stdio.h> /* std I/O library on c disk */
#define EOF -1 /* logical ^Z EOF ends copy */
#define YES 1
#define NO 0
#define YES 1
#define NO 0
#define NL '\n'
#define EOS '\0'
#define MAXLINE 1024
#define FF '\012' /* ASCII Form feed */
#define DIGMAX 10
int inword;
int nl;
int nw;
int nc;
int ndigits[DIGMAX];
int c;
/* ---------------------------------------------------------------------- */
main() /* */
{
int len; /* current line length */
int max; /* max length so far */
char line[MAXLINE];
char save[MAXLINE];
char lineupper[MAXLINE];
char linelower[MAXLINE];
max = 0;
printf("\n");
printf("\n");
printf("Jordan's function test ...\n");
printf("\n");
printf("Input text for test.\n");
printf("\n");
while ((len = getline(line, MAXLINE)) > 0) /* getline defined below */
printf("\nLine = %s\n", line);
}
/* ---------------------------------------------------------------------- */
redirect() /* redirect keybd to CRT */
{
int c;
printf("\n");
printf("\n");
printf("Jordan's redirect function...\n");
printf("\n");
printf("Input numbers, space characters, etc...\n");
printf("?");
while ((c = getchar()) != EOF) /* get char until EOF found */
putchar(c); /* send char to scrn: */
}
/* ---------------------------------------------------------------------- */
wordcnt() /* count lines, words, chars in input */
{
double c, nc, nl, nw; /* counters are float */
int inword; /* logical is interger */
inword = NO;
nl = nw = nc = 0.0; /* initialize variables */
printf("\n");
printf("\n");
printf("Jordan's word count function ...\n");
printf("\n");
printf("Input text for character, word and line count search.\n");
printf("\n");
while ((c = getchar()) != EOF) {
nc = nc + 1;
if (c == '\n') /* if c=LF then inc nl */
nl = nl + 1;
if (c == ' ' || c == '\n' || c == '\t') /* if char is space, */
inword = NO; /* LF or TAB then it */
/* cannot be a word */
else if (inword == NO) { /* otherwise it is a */
inword = YES; /* word */
nw = nw + 1;
}
}
printf("\n");
printf("\n");
printf("Number of characters = ");
printf("%.0f\n",nc); /* prt float # with no dec */
printf("Number of words = ");
printf("%.0f\n",nw);
printf("Number of lines = ");
printf("%.0f\n",nl);
printf("\n");
}
/* ---------------------------------------------------------------------- */
maxline() /* gets maximum length line in file */
{
int len; /* current line length */
int max; /* max length so far */
char line[MAXLINE];
char save[MAXLINE];
max = 0;
printf("\n");
printf("\n");
printf("Jordan's get maximum length line function ...\n");
printf("\n");
printf("Input text for maximum line length search.\n");
printf("\n");
while ((len = getline(line, MAXLINE)) > 0) /* getline defined below */
if (len > max){
max = len;
copy(line, save); /* function from below */
}
if (max > 0)
printf("%s", save);
}
/* ---------------------------------------------------------------------- */
getline(s, lim) /* getline into s, return length of s */
char s[];
int lim;
{
int c,i;
for (i = 0; i < lim-1 && (c = getchar()) != EOF && c != '\n'; ++i)
s[i] = c;
if (c == '\n'){
s[i] = c;
++i;
}
s[i] = '\0';
return(i);
}
/* ---------------------------------------------------------------------- */
copy(s1, s2) /* copy s1 to s2; assume s2 big enough */
char s1[], s2[];
{
int i;
i = 0;
while (s2[i] = s1[i] != EOS)
++i;
}
/* ---------------------------------------------------------------------- */
power(x, n) /* raise x to n-th power; n > 0 */
int x, n;
{
int i, p;
p = 1;
for (i=1; i<=n; ++i)
p=p*x;
return(p);
}
/* ---------------------------------------------------------------------- */
digicnt() /* count digits, spaces, others */
{
int c, i, nspaces, nother; /* integers */
int ndigits[DIGMAX]; /* integer array */
nspaces = nother = 0;
for (i= 0; i < 10; ++i)
ndigits[i] = 0; /* initialize arry to 0 */
printf("\n");
printf("\n");
printf("Jordan's number counter...\n");
printf("\n");
printf("Input numbers, space characters, etc...\n");
printf("?");
while ((c = getchar()) != EOF)
if (c >= '0' && c <= '9')
++ndigits[c];
else if (c == ' ' || c == '\n' || c == '\t')
++nspaces;
else
++nother;
printf("\n");
printf("\n");
printf("Jordan's number counter results...\n");
printf("\n");
printf("Number of digits = ");
for (i=0; i < 10; ++i)
printf(" %d", ndigits[i]);
printf("\nNumber of spaces = %d, Other = %d\n",
nspaces, nother);
printf("\n");
}
/* ---------------------------------------------------------------------- */
strlen(s) /* return length of string s */
char s[];
{
int i;
i = 0;
while (s[i] != '\0')
++i;
return(i);
}
/* ---------------------------------------------------------------------- */
atoi(s) /* convert numeric string into numeric equiv */
char s[];
{
int i;
int n; /* need double precision for no > 32K */
n = 0;
for (i = 0; s[i] >= '0' && s[i] <= '9'; ++i)
n = 10 * n + s[i] - '0';
return(n);
}
/* ---------------------------------------------------------------------- */
isdigit(c) /* test character to see if it is a digit */
int c;
{
int isdigit;
return(isdigit = c >= '0' && c<= '9'); /* isdigit true = 1 */
/* isdigit false = 0 */
}
/* ---------------------------------------------------------------------- */