编写程序,将一个.cpp文件中的注释,即以"*......*":括起来的文本和以“”开始的

编写程序,将一个.cpp文件中的注释,即以"*......*":括起来的文本和以“”开始的,第1张

做一个状态机

下面的状态表示:

0: 正在分析

1:读到第一个/

2:读完第二个/,"//...

3:读到 "/*...

4:读到 "/*...*

5:读到第一则笑个"

6:读到字符串里的转义符 "...\

7:找到注释

0和7是等价的状态,但是可以用7状态做些特别的吵携事情,比如这个时候删除刚找到的注释等。最后的程序孙碰含如下,输入输出还是用C的文件比较方便:

#include "stdio.h"

#include "string"

char fsm[8][128]

void initfsm()

{

const int line_len=sizeof(char)*128

memset(fsm[0],0,line_len)

memset(fsm[1],0,line_len)

memset(fsm[2],2,line_len)

memset(fsm[3],3,line_len)

memset(fsm[4],3,line_len)

memset(fsm[5],5,line_len)

memset(fsm[6],5,line_len)

memset(fsm[7],0,line_len)

fsm[0]['/']=1

fsm[0]['"']=5

fsm[1]['/']=2

fsm[1]['*']=3

fsm[1]['"']=5

fsm[2]['\n']=7

fsm[3]['*']=4

fsm[4]['/']=7

fsm[4]['*']=4

fsm[5]['"']=0

fsm[5]['\\']=6

fsm[7]['/']=1

fsm[7]['"']=5

}

int main()

{

int state=0

char c

std::string s

FILE *fin=fopen("e:\\in.txt","r")

FILE *fout=fopen("e:\\out.txt","w")

initfsm()

while(fscanf(fin,"%c",&c)!=EOF)

{

state=fsm[state][c]

s+=c

switch(state)

{

case 0:

fprintf(fout,"%s",s.c_str())

s=""

break

case 7:

s=""

if(c=='\n')

{

fputc(c,fout)

}

break

}

}

fclose(fin)

fclose(fout)

return 0

}

C语言读写文件 都是三个步骤

1.获取文件描述符

2.对文件读写

3.关闭文件

对文件读 *** 作

//获取文件指针

FILE *pFile = fopen("1.txt","w") // 文件打开方式 如果原来有数梁弯内容也会销毁//向文件写数据

fwrite ("hello", //要输入的文字

         1,//文字每一项的大小 以为这里是字符型的 就设置为1 如果是汉字就设置为4

         strlog("hello"), //单元个数 渣氏我们也可以直接写5

         pFile //我们刚刚获得到的地址

       薯闷  )

//fclose(pFile) //告诉系统我们文件写完了数据更新,但是我们要要重新打开才能在写

fflush(pFile) //数据刷新 数据立即更新

对文件写 *** 作

FILE *pFile=fopen("1.txt","r") //获取文件的指针

char *pBuf  //定义文件指针

fseek(pFile,0,SEEK_END) //把指针移动到文件的结尾 ,获取文件长度

int len=ftell(pFile) //获取文件长度

pBuf=new char[len+1] //定义数组长度

rewind(pFile) //把指针移动到文件开头 因为我们一开始把指针移动到结尾,如果不移动回来 会出错

fread(pBuf,1,len,pFile) //读文件

pBuf[len]=0 //把读到的文件最后一位 写为0 要不然系统会一直寻找到0后才结束

MessageBox(pBuf)  //显示读到的数据

fclose(pFile) // 关闭文件


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12126076.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存