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;      //右花括号只有当它和一个左花括号匹配的时候才合法
        }

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

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

  • 相关阅读:
    js 各种常用js验证
    js url校验
    最近遇到的技术问题
    a标签的target的四个值
    新系统用到的新知识
    7 天打造前端性能监控系统
    前端必读:浏览器内部工作原理
    怎么判断ThreadPool线程池里的任务都执行完毕
    docker 在window 10 专业版的安装 && .net core 在docker的部署
    .net core 中后台获取前台 数据(post)的方法
  • 原文地址:https://www.cnblogs.com/kugwzk/p/5046263.html
Copyright © 2011-2022 走看看