《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",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; //右花括号只有当它和一个左花括号匹配的时候才合法 }
这样我就明白了我的代码里会有这样的问题:没有判断假如}在{前面的的情况,这样的情况也是非法的,不能叫做成功的配对。
额这一章其实并没有学习到什么东西,也许将来用到返回来看才会懂吧。