这个相对来说算是比较简单的练习了...
开头依然是跳过空格和制表符.
然后就是将读取到的字符放入数组word中.
然后的if判断式改了判断条件.
如果是字母或者是下划线''或者井号(这个应该是预编译器控制指令)'#'.执行下列语句
for判断式判断是否超出最大字符数限制.
每次for判断式判断为真都会执行一次if判断式.而每次这个判断式都会由getch函数读取一个字符放入*w指向的word数组中,然后再进行判断.
判断不是数字并且不是下划线'',将该字符放回缓冲区然后跳出循环.
多路判定第二个判断式.
判断如果是字符符号'''或者字符串'"'符号.
则执行for循环体限制不超过最大字符限制.
第一个if判断式和其语句就是将getch读取的字符放入w指向的word数组中.(因为循环体每次执行都会进行判断式的判断,而执行判断式这歌语句就跟着执行了.)
如果遇到了'\'这个转义字符,将之后转义的那个字符一起放入w指向的word数组中.
下面那个判断句书上后面有写,c在检测到是左单引号或双引号的时候就没变过,变的一直是指针w,它一直在赋值getch读取的字符并且一直在自增,所以getch在读取到另一个单引号或双引号的时候与c进行对比,一样就表明这个字符或字符串读取完了,就跳出循环.进行其他情况的判断.
后一个同理在读到单引号或双引号之后读取到EOF也跳出循环.
最后一个判断分支也不难,判断c这个字符是不是'/'注释开始标记,然后再读取下一个负号看是不是''这个标记,如果是执行comment函数
不是就将读取的这个数放回缓冲区.
comment函数这个之前就写过.
跟刚才的判断同理,先读取到一个'*'如果下一个读取的字符是注释结束标记'/'跳出循环,如果不是将这个字符放回缓冲区.
网友评论