ConvertTab2Div.c
- 取得連結
- X
- 以電子郵件傳送
- 其他應用程式
純文字檔開頭的\t轉換成div的縮排程式,並輸出成output.txt。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
程式說明
純文字檔開頭的\t轉換成div的縮排程式,並輸出成output.txt
使用方法
cc 此檔名.c
./此檔名.此副檔名 要轉換文字檔
注意!
只有開頭的\t會轉成div。
換行字元是unix的換行字元,如果是windows的字元請用dos2unix這個程式轉換一下
*/
int main(int argc, char* argv[])
{
if (argc != 2) {
printf("argc Error!\n");
}
FILE *pfi;
FILE *pfo;
char buf[513];
pfi =fopen(argv[1],"r");
pfo =fopen("output.txt","w");
int lastLineTab=0,nowLineTab=0,newLine=1,haveDiv=0;
fprintf(pfo,"<div>\n");
while (fgets(buf,2,pfi)!=NULL){
//讀新的一行TAB數量
if (buf[0]=='\t' && newLine==1){
nowLineTab++;continue;
}
//遇到換行
if (buf[0]=='\n'){
//單獨一行幹行上一行又是有div的話
if (haveDiv==1 && newLine==1) {
fprintf(pfo,"</div>\n");
haveDiv=0;
}
fprintf(pfo,"<br />\n");
lastLineTab = nowLineTab;
newLine=1;nowLineTab=0;
continue;
}
// if (newLine==1) fprintf(pfo,"\n<-----NT:%d, LT:%d, HD:%d, ------>\n",nowLineTab, lastLineTab, haveDiv);
//如果TAB數量跟上一行不一樣就要新增DIV但是如果一樣則不用新增DIV
if (nowLineTab != lastLineTab && newLine==1){
if (haveDiv==1) {
fprintf(pfo,"</div>\n");
haveDiv=0;
}
if (nowLineTab != 0){
fprintf(pfo,"<div style=\"padding-left: %dpx;\">\n",30*nowLineTab);
haveDiv=1;
}
}
fprintf(pfo,"%c",buf[0]);
//之後就不是新的一行了
newLine=0;
}
fprintf(pfo,"</div>\n");
fclose(pfo);
fclose(pfi);
return 0;
}
- 取得連結
- X
- 以電子郵件傳送
- 其他應用程式
留言
張貼留言