编译预处理(文件读入并输出文件,删除注释、回车、换行和多余空格)

您所在的位置:网站首页 如何将c语言程序写入一个文本文件 编译预处理(文件读入并输出文件,删除注释、回车、换行和多余空格)

编译预处理(文件读入并输出文件,删除注释、回车、换行和多余空格)

2023-11-24 01:17| 来源: 网络整理| 查看: 265

编译预处理(C语言)

使用文件形式输入源程序,输出也写入文件 实验过程: 1、输入:源程序 2、输出:与处理后的源程序 3、处理结果:没有无用的字符(删除所有注释、回车、换行和多余字符)

实验内容: 1、文件输入源程序

首先准备好文档,使用fopen函数选择读入或写出的方式,采用fgets和fgetc函数进行读取字符或字符串进行相应的处理

fr=fopen(“a.txt”,“r”);从名为a.txt的文档读入文件到程序中 fw=fopen(“b.txt”,“w”);将内容写入到b.txt的文档中

fgets(str,99,fr)将读入文档fr中的内容按行送给字符串str fgetc(str,fr)表示将fr中的内容按字符送给字符str

fputs(str,fw);将字符串str中的内容写入到fw文档中 fputc(str,fw);将字符str中的内容写入到fw文档中

FILE *fr,*fw; char str[99]; fr=fopen("a.txt","r"); fw=fopen("b.txt","w"); while(fgets(str,99,fr)!=NULL) fputs(str,fw); fclose(fr); fclose(fw);

表示将文档a.txt内容按行送给字符串str,然后逐行写入文档b.txt中

2、删除注释 根据对字符串的读入,对每行的字符串进行判断,若发现连续两个字符是‘/’,则将该两个字符值赋为‘\0’,然后break到下一行,直到所有字符均以处理完毕

void zhushi(char *str){ int i,j; char ss[99]; for(i=0;str[i]!=EOF;i++){ if(str[i]=='/'&&str[i+1]=='/'){ str[i]='\0'; str[i+1]='\0'; break; } } //printf("%s",str); }

3、删除回车和换行

对每行的字符串进行比较,若发现有字符为‘\r’或’\n’,则将字符改为空字符’\0’,直到所有字符串均已处理完毕

//去除多余的回车和换行 void enter(char *str){ int i,j; for(i=0;str[i]!=EOF;i++){ if(str[i]=='\n'||str[i]=='\r'){ str[i]=32; } } }

4、删除多余空格 这一部分请参考我的上一篇博客(删除字符串多余空格)(https://blog.csdn.net/ScottWei_007/article/details/88089539)

5、最后在代码整合的过程中,即换行与回车操作进行完后,可能会使字符串与字符串之间有空格,因此再对所整合后的字符串进行一次多余空格处理即完成。

完整代码如下:

#include #include //定义全局变量 char str[99]; char ss[99]=" "; //删除文档里的注释 void zhushi(char *str){ int i,j; char ss[99]; for(i=0;str[i]!=EOF;i++){ if(str[i]=='/'&&str[i+1]=='/'){ str[i]='\0'; str[i+1]='\0'; break; } } //printf("%s",str); } //删除文档里多余的空格 void space(char *str){ int i,j,k; for(i=0;str[i]!=EOF;i++){//保留一个空格("a student"中在a和student之间只需保留一个空格) if(str[i]==32&&str[i+1]==32) { k=i; for(j=i;str[j]!=EOF;j++) if(str[j]!=32) break; for(j;str[j]!=EOF;j++){ str[k+1]=str[j]; k++; } } } if(str[0]==32){//处理字符串开头为空格(" a student"中a前面的空格应删去) for(i=0;str[i]!=EOF;i++) str[i]=str[i+1]; } for(i=0;str[i]!=EOF;i++){//删去不用字符(“int m, n”中,和n之间的空格应删去) if(str[i]==32){ if(str[i-1]>='a'&&str[i-1]='a'&&str[i+1]


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3