练习 1-23 编写一个删除C语言程序中所有的注释语句。要正确处理带引号的字符串与字符常量。在C语言中,注释不允许嵌套。
2023-09-14 09:06:57 时间
C语言程序设计(第二版) 练习1-23 个人设计
练习 1-23 编写一个删除C语言程序中所有的注释语句。要正确处理带引号的字符串与字符常量。在C语言中,注释不允许嵌套。
代码块:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void delete_note(char s[]); //定义删除注释函数
int main()
{
char string[1000]; //定义一个足够长的字符串容纳程序
int i;
printf("Please enter code:\n");
for (i=0; (string[i]=getchar())!=EOF; i++); //输入程序,注意程序结尾用文件终止符,同时保证回车作为字符输入字符串内
string[i]='\0'; //程序(即字符串)结尾用终止符
delete_note(string); //调用删除注释函数
printf("New code:\n");
puts(string); //输出删除注释后的程序
system("pause");
return 0;
}
/*删除注释函数*/
void delete_note(char s[])
{
int i, j, m, n, len, str;
len=strlen(s); //测量出程序(即字符串)的长度
for (i=0, str=0; i<len; i++){
if (s[i]=='"') //24-25行为了判断注释符号是否出现在双引号的字符串内,如果是,str模2不会为0
str++;
if (s[i]=='/'&&s[i+1]=='/'&&str%2==0){ //26-30行是判断行注释的条件,同时把注释转换为空格
for (j=i; s[j]!='\n'; j++)
s[j]=' ';
i=j;
}
if (s[i]=='/'&&s[i+1]=='*'&&str%2==0){ //31-38行是判断块注释的条件,同时把注释转换为空格
printf("aha\n");
for (j=i+1; s[j]!='/'; j++)
s[j]=' ';
s[i]=' ';
s[j]=' ';
i=j+1;
}
}
for (i=0; i<len; i++) //40-45行把已经转换为空格的注释行清除
if (s[i]=='\n'){
for (j=i+1; s[j]==' '; j++);
if (s[j]=='\n')
for (m=i+1, n=j+1; s[m]!='\0'; s[m++]=s[n++]);
}
}
相关文章
- 实现数据结构与算法需要掌握的C语言
- C语言__attribute__ ((__packed__))关键字自动字节对齐
- 【C语言入门教程】4.4 指针 与 指针变量
- [置顶] C语言itoa()函数和atoi()函数详解(整数转字符C实现)
- Java C# C语言中的占位符
- C语言/C++常见习题问答集锦(二十二)
- ZZNUOJ_C语言1065:统计数字字符的个数(完整代码)
- ZZNUOJ_用C语言编写程序实现1150:组合三位数之一(附完整源码)
- 【C语言】详解 C 语言获取数组长度
- C语言实现用指定字符切割字符串并返回数组
- C语言 #和##
- 【C语言】写一个函数,实现字符串内单词逆序
- C语言必掌握知识点
- C语言之container_of原理单步拆解(七十七)
- C语言之结构体相减的本质(七十四)
- C语言中为什么不能把char**赋给const char**
- C语言指针的初始化和赋值
- C语言 使用char字符实现汉字处理
- C语言以字符的方式读写文件
- 【C语言】Static 静态变量
- C语言入门之函数