zoukankan      html  css  js  c++  java
  • 《C和指针》学习笔记(4)

      进入《pointer on C》的第二章,不过感觉这一章没讲什么实质性的内容,主要是一些风格、字符以及一些古老的东西(比如三字母词)自己也不是很感兴趣。不过也算是了解一下C的历史了吧。不过问题和程序还是好好看了看。

      比如又知道了一些转义字符:

    ?在书写多个分号的情况下使用,防止被解释为三字母词。

    ”用于表示一个字符串常量内部的双引号。

    ’用于表示字符常量。

    \用于表示一个

    写了一个例子:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        printf(""Bluder??!??"");
        return 0;
    }

    结果输出的是: “Bluder??!??”

    程序2.1:

    编写一个程序,他从标准输入读取C源代码,并验证所有的花括号都正确的成对匹配。

    我的答案:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int ch;
        int n=0;     //计数器
        while((ch=getchar())!=EOF)
        {
            if(ch=='{')
                n+=1;   //表示空余出来一个{
            if(ch=='}')
                n-=1;
        }
        if(n!=0)
            printf("%d unmatched opening brace(s)!
    ",n);
        return EXIT_SUCCESS;
    }

    书的答案中在whlie语句中是这样的:

    while((ch=getchar())!=EOF)
        {
            if(ch== '{')
                n+=1;        //左花括号始终合法
            if(ch== '}')
                if(n==0)
                    printf("Extra closing brace");
                else
                     n-=1;      //右花括号只有当它和一个左花括号匹配的时候才合法
        }

    这样我就明白了我的代码里会有这样的问题:没有判断假如}在{前面的的情况,这样的情况也是非法的,不能叫做成功的配对。

    额这一章其实并没有学习到什么东西,也许将来用到返回来看才会懂吧。

  • 相关阅读:
    CSS浮动(float、clear)通俗讲解
    JAVA 类的加载
    数据库操作 delete和truncate的区别
    正则表达式 匹配相同数字
    Oracle EBS OM 取消订单
    Oracle EBS OM 取消订单行
    Oracle EBS OM 已存在的OM订单增加物料
    Oracle EBS OM 创建订单
    Oracle EBS INV 创建物料搬运单头
    Oracle EBS INV 创建物料搬运单
  • 原文地址:https://www.cnblogs.com/kugwzk/p/5046263.html
Copyright © 2011-2022 走看看