#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include "c2html.h"
#ifdef HTML3
#include "c2html3.h"
#endif
#ifdef HTML4
#include "c2html4.h"
#endif
#ifdef XHTML1
#include "c2xhtml1.h"
#endif
#ifdef XHTML11
#include "c2xhtml11.h"
#endif
void output_header();
void output_body();
int is_keyword(char *token);
void escape_char(int c);
int main(int argc, char *argv[]){
output_header();
output_body();
return 0;
}
void output_header(){
puts(header);
}
/*
state 0: normal
state 1: in comment
state 2: in string
*/
void output_body(){
int i, c, prev, state;
char token[TOKEN_MAX_LENGTH];
printf("<body>\n");
printf("<pre class=\"code\">\n");
i = 0;
state = 0;
prev = '\0';
while((c = getchar()) != EOF){
if (c == '\\'){
putchar(c);
prev = c;
c = getchar();
}
switch (state){
case 0:
if (isalnum(c) || (c == '_')){
token[i++] = c;
} else {
token[i++] = '\0';
i = 0;
if (is_keyword(token)){
printf("%s%s%s", start_keyword, token, end_keyword);
} else {
printf("%s", token);
}
switch (c){
case '"':
escape_char(c);
if (prev != '\''){
state = 2;
}
break;
case '/':
prev = c;
c = getchar();
switch (c){
case '/':
printf("%s%s", "//", start_comment);
c = getchar();
while((c != '\n') && (c != EOF)){
escape_char(c);
c = getchar();
}
puts(end_comment);
break;
case '*':
printf("%s%s", start_comment, "/*");
state = 1;
break;
default:
escape_char(prev);
escape_char(c);
break;
}
break;
default:
escape_char(c);
break;
}
}
break;
case 1:
if (prev == '*' && c == '/'){
printf("%c%s", c, end_comment);
state = 0;
} else {
escape_char(c);
}
break;
case 2:
escape_char(c);
if ((c == '"') && (prev != '\\')){
state = 0;
}
break;
}
prev = c;
}
printf("\n</pre>\n");
printf(
"</body>\n"
"\n"
"</html>\n"
);
}
void escape_char(int c){
switch (c){
case '<':
printf("<");
break;
case '>':
printf(">");
break;
case '&':
printf("&");
break;
case '"':
printf(""");
break;
case '\t':
printf(" ");
break;
default:
putchar(c);
break;
}
}
int is_keyword(char *token){
int i;
for(i = 0; i < keyword_count; i++){
if (strcmp(token, keyword_list[i]) == 0){
return 1;
}
}
return 0;
}
cpp文件转换为html文件的源程序.zip_cpp_html
版权申诉
5星 · 超过95%的资源 150 浏览量
2022-09-24
12:11:26
上传
评论
收藏 18KB ZIP 举报
朱moyimi
- 粉丝: 65
- 资源: 1万+
最新资源
- 3层独栋别墅占地面积140平方米别墅结构.dwg
- 让我们更详细地探讨模拟退火算法的MATLAB实现 下面的代码示例将包括更详细的注释,以及一个更复杂一些的目标函数,这个函数在多维
- 3层独栋别墅占地面积140平方米别墅施工图.dwg
- 让我们更详细地探讨模拟退火算法的MATLAB实现 下面的代码示例将包括更详细的注释,以及一个更复杂一些的目标函数,这个函数在多维
- 模拟退火算法MATLAB实现 function sa-minimize
- 三层别墅图纸编号D079-三层-17.50&17.70米- 施工图.dwg
- 三层独栋别墅砖混结构总建筑面积558.1平米施工结构图.dwg
- hive的安装与配置.zip
- 单家独院式占地面积115.2平方米图纸D077-三层-12.00&09.00米-施工图.dwg
- 3层新农村独栋别墅编号D076-三层-08.50&11.20米- 施工图.dwg
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈