idents.c
资源名称:c.rar [点击查看]
上传用户:shmaik
上传日期:2014-06-01
资源大小:45093k
文件大小:1k
源码类别:

VC书籍

开发平台:

C/C++

  1. /*
  2. This version of ids uses Str and Seq,
  3. and reads the identifers from right to left.
  4. */
  5. #include <stdlib.h>
  6. #include <string.h>
  7. #include <mem.h>
  8. #include "fmt.h"
  9. #include "seq.h"
  10. #include "str.h"
  11. int main(int argc, char *argv[]) {
  12. char line[512];
  13. Seq_T seq = Seq_new(1);
  14. char *first = Str_catv("abcdefghijklmnopqrstuvwxyz", 1, 0,
  15. "ABCDEFGHIJKLMNOPQRSTUVWXYZ", 1, 0, "_", 1, 0, NULL);
  16. char *rest = Str_cat("0123456789", 1, 0, first, 1, 0);
  17. Fmt_register('S', Str_fmt);
  18. while (fgets(line, sizeof line, stdin) != NULL) {
  19. int i, j = 0;
  20. while ((j = Str_rupto(line, 1, j, first)) > 0){
  21. i = Str_rmany(line, 1, j + 1, rest);
  22. Seq_addlo(seq, Str_sub(line, i, j + 1));
  23. j = i;
  24. }
  25. while (Seq_length(seq) > 0) {
  26. char *id = Seq_remlo(seq);
  27. Fmt_print("%Sn", id, 1, 0);
  28. FREE(id);
  29. }
  30. }
  31. FREE(first); FREE(rest);
  32. Seq_free(&seq);
  33. return EXIT_SUCCESS;
  34. }