码迷,mamicode.com
首页 > 其他好文 > 详细

《C和指针》学习笔记(4)

时间:2015-12-14 20:59:24      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:

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

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

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

《C和指针》学习笔记(4)

标签:

原文地址:http://www.cnblogs.com/kugwzk/p/5046263.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!