zoukankan      html  css  js  c++  java
  • 做C Programming Language的习题,突发奇想研究如何消除任意多空格或\t,并把格式转换为每个单词占一行

    先自己做了个版本,理清逻辑关系花了不少时间。不动笔脑子里来回绕,一动笔思路就清晰了,看来思维习惯得好好改一下。

    #include <stdio.h>
    
    void main(void)
    {
        freopen("original.txt", "r", stdin);
        freopen("myVersion.txt", "w", stdout);
        int b, c;
        b = getchar();
        while ( ( c = getchar()) != EOF)
        {
            if (c == ' ' || c == '\t') {
                if (b == ' ' || b == '\t') {
                    continue;
                }
                else {
                    putchar(b);
                }
            }
            else {
                if (b == ' ' || b == '\t') {
                    putchar('\n');
                }
                else {
                    putchar(b);
                }
            }
            b = c;
        }
        putchar(b);
        fclose(stdin);
        fclose(stdout);
    }

    后来看到书上的例子,用状态转换来统计单词,学着做了个,感觉更简洁清晰

    #include <stdio.h>
    #define IN 1
    #define OUT 0
    
    void main(void)
    {
        freopen("original.txt", "r", stdin);
        freopen("bookVersion.txt", "w", stdout);
    
        int c, state;
        state = IN;
        while ((c = getchar()) != EOF)
        {
            if (c == ' ' || c == '\t')
                state = OUT;
            else if (state == OUT) {
                state = IN;
                putchar('\n');
                putchar(c);
            }
            else
                putchar(c);
        }
        fclose(stdin);
        fclose(stdout);
    }

    original.txt (貌似tab全部自动转成空格了,其实1~90之间的空格、tab搭配都不一样)

         1   2            3                    4                          56                                                        7a  kjj                     90
    sdf                         234
    由 xx 发表于 2011年10月20日 星期四 21:04
    
    显示父帖子 | 回复
    跳过 导航
    C 语言程序设计

    myVersion.txt & bookVersion.txt , 结果是一样的:

    1
    2
    3
    4
    56
    7a
    kjj
    90
    sdf
    234
    由
    xx
    发表于
    2011年10月20日
    星期四
    21:04
    
    显示父帖子
    |
    回复
    跳过
    导航
    C
    语言程序设计

    今天学会理清逻辑,学会使用状态转换的思维,复习了文件的打开函数、读写操作,stdin/stdout重定向。

  • 相关阅读:
    C++指针(一)
    探讨mvc下linq多表查询使用viewModel的问题
    利用aspnetPager控件加存储过程实现对gridview的分页
    Javascript 笔记
    对于最近学习WCF的总结——唔聊的服务
    今天面试的一些知识性总结
    使用C#反序列化plist文件
    Running x86 apps on WinRT devices
    ItemsSource绑定中遇到的问题
    字节对齐 详解
  • 原文地址:https://www.cnblogs.com/kkzxak47/p/2934509.html
Copyright © 2011-2022 走看看