编译器练习:将C程序中的注释中的小写字母转换为大写字母
2009-03-17 18:20
656 查看
/*filename:notes.c
programed by:alex shoal
edit date:2009-2-9
revision:1
****************
reference:
"compiler construction principles and practice"
page 42~43 DFA design
****************
*/
#include <stdio.h>
#include <stdlib.h> // ANSI C exit() prototype
int is_lowercase(int);
int is_uppercase(int);
int main(int argc, char *argv[])
{
int ch; // place to store each character as read
int state=0;
FILE *fp; // "file pointer"
if (argc != 2){
printf("Usage: %s filename/n", argv[0]);
exit(1);
}
if ((fp = fopen(argv[1], "r")) == NULL){
printf("Can't open %s/n", argv[1]);
exit(1);
}
while (((ch = getc(fp)) != EOF)){
switch(state){
case 0:{ if(ch=='/') state=1; break; }
case 1:{ switch(ch){
case '*': state=2;break;
case '/': state=4;break;
default : state=0;break;
}
break;
}
case 2:{ if(ch=='*') state=3;break; }
case 3:{ if(ch=='/') state=0;else state=2;}
case 4:{ if(ch==10 ) state=0;} //if ch == '/n', exit
}
if(is_lowercase(ch)==1&&(state==2||state==4))
putc(ch-32,stdout);
else putc(ch,stdout);
}
fclose(fp);
return 0;
}
int is_lowercase(int ch){
if (ch>=97&&ch<=122)
return 1;
else return 0;
}
int is_uppercase(int ch){
if (ch>=65&&ch<=90)
return 1;
else return 0;
}
programed by:alex shoal
edit date:2009-2-9
revision:1
****************
reference:
"compiler construction principles and practice"
page 42~43 DFA design
****************
*/
#include <stdio.h>
#include <stdlib.h> // ANSI C exit() prototype
int is_lowercase(int);
int is_uppercase(int);
int main(int argc, char *argv[])
{
int ch; // place to store each character as read
int state=0;
FILE *fp; // "file pointer"
if (argc != 2){
printf("Usage: %s filename/n", argv[0]);
exit(1);
}
if ((fp = fopen(argv[1], "r")) == NULL){
printf("Can't open %s/n", argv[1]);
exit(1);
}
while (((ch = getc(fp)) != EOF)){
switch(state){
case 0:{ if(ch=='/') state=1; break; }
case 1:{ switch(ch){
case '*': state=2;break;
case '/': state=4;break;
default : state=0;break;
}
break;
}
case 2:{ if(ch=='*') state=3;break; }
case 3:{ if(ch=='/') state=0;else state=2;}
case 4:{ if(ch==10 ) state=0;} //if ch == '/n', exit
}
if(is_lowercase(ch)==1&&(state==2||state==4))
putc(ch-32,stdout);
else putc(ch,stdout);
}
fclose(fp);
return 0;
}
int is_lowercase(int ch){
if (ch>=97&&ch<=122)
return 1;
else return 0;
}
int is_uppercase(int ch){
if (ch>=65&&ch<=90)
return 1;
else return 0;
}
相关文章推荐
- 编译器练习:将C程序中的除注释外的所有保留字全部大写
- 编译器练习:找出C程序中除注释外的数字并将其值翻倍
- 编写程序除过大写字母转换成小写字母,其余原样输出
- 关于汇编的基本小程序——将输入字符串中的小写字母转换成大写字母并输出
- 简单的C程序——实现小写字母转换为大写字母
- 练习2-10 重新编写将大写字母转换为小写字母的函数lower,并用条件表达式替代其中的if-else结构。
- (方法)把一个字符串中的大写字母转换成小写,小写字母转换成大写2
- java中把一个字符串中大写字母转换为小写,小写字母转换为大写
- 编程题:输入一串字符,程序会自动将大写字母转换为小写
- 标准输入读取字符,并标准输出。大写字母转换成小写字母,其他的原样输出
- 练习1-5 修改温度转换程序,要求以逆序(从300度到0度的顺序)打印温度转换表
- 【C++ Primer】【练习题】【3.14】将vector<string>对象各元素中的小写字母转换成大写字母
- noi-8175-将字符串中的小写字母转换成大写字母
- 注释转换-小程序
- java中把一个字符串中大写字母转换为小写,小写字母转换为大写
- Java重修之路(二)第一个程序分析,注释,关键字,标识符,常量,进制转换,类型转换
- C语言:从键盘输入一个字符串,以感叹号!作为结束标志,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件test中保存。
- 第19课时,实践1,编写一个程序,从键盘上输入一个小写字母,显示这个小写字母及它所对应的大写字母以及它们的ASCII码值
- 编写程序,实现生成一随机字母(a~z)或(A~Z),如果是小写字母则转化成大写字母。
- 练习1-15 重新编写1.2节中的温度转换程序,使用函数实现温度转换计算