- 締切済み
C言語をHTMLに整形してくれるツールを探しています
C言語のソースをHTMLに直してくれるサイトやプログラムはあるでしょうか・・・。見やすいように一行おきに背景色を付けてくれるものを探しているのですがVectorでは見つけられなくて質問しました。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- tekebon
- ベストアンサー率62% (36/58)
No.2です。 下記のprintHTML関数の本体部分を先ほどの「c2html.c」へ 追加してください。 void printHTML(FILE *stream, const char *str) { int i; for(i=0; *(str+i) != '\0'; i++){ switch(*(str + i)){ case '<': fprintf(stream, "<"); break; case '>': fprintf(stream, ">"); break; case '&': fprintf(stream, "&"); break; case '\t': fprintf(stream, " "); break; default: fprintf(stream, "%c", *(str + i)); break; } } } 色設定は適当ですので、お好みで変更していただければと思います。
- tekebon
- ベストアンサー率62% (36/58)
単純なHTMLでよければこんなのでどうでしょう? 「c2html.c」というファイルを作成し、コピーしてみてください。 #include<stdio.h> #include<stdlib.h> #include<string.h> void printHTML(FILE *stream, const char *str); #define BUF_SIZE 256 int main(int argc, char *argv[]) { FILE *fpSource, *fpOut; char buf[BUF_SIZE]; char *color[2] = {"lightgreen", "white"}; int idx = 0; if(argc < 3){ printf("Usage:\n"); printf(">c2html <source.c> <out.html>\n"); exit(0); } printf("%s -> %s\n", argv[1], argv[2]); fpSource = fopen(argv[1], "r"); fpOut = fopen(argv[2], "w"); if(fpSource == NULL || fpOut == NULL){ printf("File open error\n"); exit(1); } fprintf(fpOut, "<html>\n"); fprintf(fpOut, "\t<head>\n"); fprintf(fpOut, "\t\t<title>%s</title>\n", argv[1]); fprintf(fpOut, "\t</head>\n"); fprintf(fpOut, "<body>\n"); fprintf(fpOut, "<h3>%s</h3>\n", argv[1]); fprintf(fpOut, "\t\t<table border='0'>\n"); while(fgets(buf,BUF_SIZE,fpSource) != NULL){ buf[strlen(buf)-1] = '\0'; fprintf(fpOut, "\t\t\t<tr bgcolor='%s'><td align='right'>%d:</td><td>", color[idx % 2], idx+1); if(strlen(buf) == 0){ fprintf(fpOut, " "); }else{ printHTML(fpOut, buf); } fprintf(fpOut, "</td></tr>\n"); idx++; } fprintf(fpOut, "\t\t</table>\n"); fprintf(fpOut, "\t</body>\n"); fprintf(fpOut, "</html>\n"); fclose(fpSource); fclose(fpOut); return 0; } printHTML関数が入りきらなかったので、申し訳ありませんが 連投させていただきます。
- ikazuti
- ベストアンサー率27% (130/469)
SourceConverterっていうソフトがありますが、どうでしょうか? Cにも対応しているようです。
補足
これも1行ごとに色つけできないタイプですね・・・