📄 words.c
字号:
/*
This version of ids uses Text and Ring,
and reads the identifiers from right to left.
This version is a circuitous solution to Exercise 16.1.
*/
#include <stdlib.h>
#include <stdio.h>
#include "fmt.h"
#include "ring.h"
#include "text.h"
#include "mem.h"
int main(int argc, char *argv[]) {
char buf[512];
Text_save_T save = Text_save();
Ring_T ring = Ring_new();
Text_T first = Text_cat(Text_cat(Text_ucase, Text_lcase), Text_box("_", 1));
Text_T rest = Text_cat(first, Text_digits);
Fmt_register('T', Text_fmt);
while (fgets(buf, sizeof buf, stdin) != NULL) {
Text_T line = Text_put(buf), *id;
int j = 0;
while ((j = Text_rupto(line, 1, j, first)) > 0) {
int i = Text_rmany(line, 1, j + 1, rest);
NEW(id);
*id = Text_sub(line, i, j + 1);
Ring_addlo(ring, id);
j = i;
}
while (Ring_length(ring) > 0) {
id = Ring_remlo(ring);
Fmt_print("%T\n", id);
FREE(id);
}
}
Ring_free(&ring);
Text_restore(&save);
return EXIT_SUCCESS;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -