刪除C語言程式中所以的注釋語句(有疑問)

2022-07-02 05:24:08 字數 1711 閱讀 7224

源自《the c programming language》p25 p1-23:

編寫乙個刪除c語言程式中所以的注釋語句。要正確處理帶引號的字串和字元常量。在c語言中,注釋不允許巢狀。

main.c

1/*2

#include 34

#define maxline 100056

int getline(char s, int lim);

7void copy(char to, char from);

8void delnotes(char **s, int row);910

int main()

1124

25int getline(char s, int lim)

2637

s[i] = '\0';

3839

return i;

4041}42

43void copy(char to, char from)

4451

52void delnotes(char **s, int row)

5368

else if(s[i][j+1] == '*')

6972}73

}74*/75

76#include

<

stdio.h

>

7778

void

rcomment(

intc);

79void

in_comment();

80void

echo_quote(

intc);

8182

intmain()

8392

93void

rcomment(

intc)

94107

else

108112

else

if(c =='

\''||c =='

\"')113

echo_quote(c);

114else

115putchar(c);

116}

117118

void

in_comment()

119129

}130

131void

echo_quote(

intc)

132142

putchar(d);

143}

分析:輸出:int a = 9;,當c == '/',d == '*'時,進入in_comment函式,則後面的"variant a equal 9"不輸出在終端,

最終游標停在int a = 9;中';'字元後面等待下一次輸入(此時仍在執行in_comment函式,並未跳出)。

當再次輸入:comment*/end時,繼續接著執行in_comment函式中的while迴圈(因為處理完上次輸入後,

並未跳出in_comment函式中的while迴圈),故不會輸入"comment",當讀入'*'和'/',in_comment函式

中的while條件不滿足了,跳出in_comment,跳回到rcomment中,接著跳回到main中的while迴圈中,從

輸入緩衝區中讀入"end",輸出到終端的下一行。

疑問:1,  echo_quote函式:if(d == '//') putchar(getchar()); 的作用?

讀取檔案 刪除注釋的C 程式

我有朋友向我求助寫乙個讀取檔案然後刪掉注釋的程式,也順便練練手。內容是在content裡面。下面的只是讀到了content然後顯示,沒有改動原來檔案的內容。include include include include include include include using namespace ...

C語言原始檔注釋刪除

寫這個東西,主要是為了進行 比較。因為在進行比較時,經常會比較出非常多的注釋的不同,又沒有實際意義。非常讓人頭疼。下面是 void nvdodelcomment file in,file out else if first comment line ists 1 iflag else if seco...

一條語句查詢資料庫中所以表的資訊

select 表名 case when a.colorder 1 then d.name else end,表說明 case when a.colorder 1 then isnull f.value,else end,字段序號 a.colorder,欄位名 a.name,標識 case when ...