⑴ 如何编一个c语言程序,功能是去掉代码中的双斜杠注释
逻辑应该可以这样,先读某c文件(读文本),然后去掉 包含//的字符串,就OK了
#include<stdio.h>
#include<string.h>
void fun(char *s, char *m, int len)
{
int i=0,j=0,k=0,n=0;
while(s[j])
{
if(s[j]==m[i])
{
n=0;
while(m[i])
{
if(s[j+k]==m[i])
n++;
else break;
k++;
i++;
}
i=0;
k=0;
if(n==len)
strcpy(s+j,s+j+4);
}
j++;
}
}
int main()
{
char s[]="aabcdeabcdfgabcdefgabcd"; char m[]="abcd"; int len = strlen(m); fun(s,m,len); printf("%s\n",s);
}
⑵ c语言 删除程序中的注释
1、少了很多大括号,包括while的,if else的
2、while(feof(fp1)!=EOF) 最好改为while(!feof(fp1))
3、我改后测了一下,这个程序只能删除“/* */”的注释,对“//”的注释无效。再改一下状态机吧。
4、下面的程序我把格式整理了一下,没改什么算法部分。写程序要规范。
#include "stdio.h"
void delcomm(FILE*fp1,FILE*fp2)
{
char c;
int i=0;
while(!feof(fp1))
{
printf("test\n");
if((c=fgetc(fp1))=='\n')
fprintf(fp2,"\n");
else
{
switch(i)
{
case 0:
if (c=='/')
i=1;
else
fprintf(fp2,"%c",c);
break;
case 1:
if (c=='*')
i=2;
else
{
fprintf(fp2,"/%c",c);
i=0;
}
break;
case 2:
if (c=='*')
i=3;
break;
case 3:
i=(c=='/')?0:2;
break;
}
}
}
}
int main()
{
FILE*fp1,*fp2;
if ((fp1=fopen("/home/hxl/test/md5.c","r"))==NULL)
{
printf("wrong!");
exit(0);
}
fp2=fopen("/home/hxl/test/md5out.c","w");
delcomm(fp1,fp2);
fcloseall();
}
⑶ 如何删除一个C语言程序中的注释
分析字符串,碰到//直接删除整行.
碰到/*删除,然后做个标记,继续查找
*/找到以后删除它们中间的字符串。
具体的代码,你自己看能写出来不
⑷ 用C语言编译程序:删除C++源程序中的多余空行及注释文字
代码如下:#include
<stdio.h>
#include
<stdlib.h>
#include
<string.h>void
main()
{
FILE*
fp
=
fopen("test.cpp",
"r");
if(NULL
==
fp)
{
return;
}
fseek(fp,
0L,
SEEK_SET);
char
char_line[1024]
=
{0}; int
totoalline
=
0;
printf("/****************原始文件*************************/\n");
while(1)
{
fgets(char_line,
1024,
fp);
int
size
=
strlen(char_line);
if(0
>=
size)
{
break;
}
printf("%s",
char_line);
memset(char_line,
0,
1024);
totoalline++;
}
printf("/****************原始文件结束,共%d行*************/\n",
totoalline); fseek(fp,
0L,
SEEK_SET);
totoalline
=
0;
FILE*
fp_to
=
fopen("result.cpp",
"w");
printf("\n\n/****************去除冗余后的文件*****************/\n");
while(1)
{
fgets(char_line,
1024,
fp);
int
size
=
strlen(char_line);
if(0
>=
size)
{
break;
}
int
i;
for(i=0;
i<size-1;
i++)
{
if('/'
==
char_line[i]
&&
'/'
==
char_line[i+1])
{
break;
}
}
if(0
!=
i)
{
bool
flag_tab
=
0;
for(int
j=0;
j<i;
j++)
{
if('\t'
!=
char_line[j]
&&
'
'
!=
char_line[j])
{
flag_tab
=
true;
break;
}
}
if(flag_tab)
{
char*
ret
=
(char*)malloc(sizeof(char)*(i+1));
ret[i]
=
0;
memcpy(ret,
char_line,
i);
printf("%s\n",
ret);
//写入到新文件
fwrite(ret,
sizeof(char),
i,
fp_to);
fwrite("\r\n",
sizeof(char),
2,
fp_to);
free(ret);
totoalline++;
}
}
memset(char_line,
0,
1024);
}
printf("/****************去除冗余后的文件结束,共%d行*****/\n",
totoalline);
printf("详情查看resutl.cpp\n");
fclose(fp);
fclose(fp_to);
}
⑸ 删除c语言的注释包括//,和/* */
谁说的呀,//一般用于短注释
/* */ 用于那些一行放不下的长注释
⑹ 删除C语言程序中所以的注释语句
33行是为了表示 ' 这个符号,如果写成c == '''那么'''这三个引号,遇到第二个引号时结束了。
所以要转义也就是将 ' 写成 \' 以此来表示'号。
62同理
是为了表示\这个符号,用转义符号\来转义,写成\\表示的就是\的意思
⑺ C语言的注释 删除C语言中的注释
少年,作业就自己写,还上网络知道让别人免费给你写作业?给你点提示吧,重点是找出注释,也就是找出字符串数组中注释//或者/*和*/的数组下标,其他就是遍历查找的事情,自己写吧
⑻ 写一个C++程序,使其能够删除源代码文件中的所有注释语句(包括以// 和/* */两种)
#include<iostream>
#include<string>
usingnamespacestd;
/*
string::npos表示没找到
*/
intmain(){
strings="inta=1;//aaa intb=2;//bbb /*thisiscomment.*/intc=a+b;//ccc";//文本代码
while(1){
if(s.find("//")!=string::npos){
size_tpos=s.find("//");
size_tend=s.find(" ",pos);//从pos位置开始寻找
size_tlen=end-pos;
s.erase(pos,len);//删除pos位置开始后长度为len的字符串
}elseif(s.find("/*")!=string::npos){
size_tpos=s.find("/*");
size_tend=s.find("*/",pos);
stringtemp("*/");
size_tlen=end-pos+temp.length();
s.erase(pos,len);
}else
break;
}
cout<<s<<endl;
return0;
}
⑼ 编程实现去掉C语言文件中的注释
给个思路吧:
按行读取文件,在本行寻找字符“//”和“/*”
若找到“//”,则从字符/开始一直到行尾的所有字符全都去掉
若找到“/*”,则从此处开始寻找“*/”,删除字符“/*”和“*/”及二者之间的字符