blob: 045eaf73398f291c45527c402e7b6c03021f0c64 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
// #include <stdio.h>
// #include <stdlib.h>
// #include <stdint.h>
#include <ctype.h>
// #include <string.h>
// #include <error.h>
// #include <errno.h>
#include "getch.h"
#include "word.h"
// #define MAXBUFF 100
//
// uint32_t top;
// char *wstack[MAXBUFF];
char getword(char *word, int lim)
{
char *w = word;
// if (top > 0)
// return *wstack[--top];
while (isblank(*w = getch()))
;
if (isalpha(*w)) {
while ((isalnum(*++w = getch()) || *w == '_') && --lim > 0)
;
ungetch(*w--);
} else if (*w == '#') {
--lim;
do {
*++w = getch();
} while (isalpha(*w) && --lim > 0);
ungetch(*w--);
}
*++w = '\0';
return word[0];
}
//
// void ungetword(char *word)
// {
// if (top < MAXBUFF) {
// if ((wstack[top++] = strdup(word)) == NULL)
// error(EXIT_FAILURE, ENOBUFS, "ungetword");
// } else {
// error(EXIT_FAILURE, ENOBUFS, "ungetword");
// }
// }
//
// void wordfree(void)
// {
// uint32_t i;
//
// for (i = 0; i < top; ++i)
// free(wstack[i]);
// }
|