2 u011046042 u011046042 于 2014.12.08 09:21 提问

如何在工程目录下读取.c的源文件

如何在工程目录下读取.c的源文件 然后分析文件中是否有“/* ”“//”

7个回答

caozhy
caozhy   Ds   Rxr 2014.12.08 15:07
已采纳

#include

int main()

{

FILE *fp,*fp1; 

char str[99]=""; 

int i=0; 

fp=fopen("test.c","r"); //要打开的源文件 

fp1=fopen("new.c","w"); //另存为 

while(fgets(str,99,fp)!=NULL) 

{ 

    for(i=0;i<99;i++) 

    if(str[i]=='/'&&str[i-1]=='/'){str[i-1]='\n';str[i]='\0';break;} 

    fputs(str,fp1); 

} 

fcloseall(); 

return 0; 

}

如果有/* */块注释的话,用这个

#include

#include

int main()

{

FILE *fp,*fp1; 

char str[99]="",str1[99]=""; 

int i,j,no=0; 

fp=fopen("test.c","r"); //要打开的源文件 

fp1=fopen("new.c","w"); //另存为 

while(fgets(str,99,fp)!=NULL) 

{ 

    for(i=0;i<99;i++) 

    { 

        if(str[i]=='/'&&str[i-1]=='/') 

        {str[i-1]='\n';str[i]='\0';} 



        if(str[i]=='*'&&str[i-1]=='/') 

        {str[i-1]='\0';no=1;fputs(str,fp1);} 



        if(str[i]=='/'&&str[i-1]=='*') 

        { 

            for(j=0;j<98-i;j++){str[j]=str[i+j+1];} 

            str[j]='\0'; 

            no=0; 

        } 

    } 

    if(no==0)fputs(str,fp1); 

} 

fcloseall(); 

return 0; 

}

caozhy
caozhy 回复u011046042: 一个标志,判断当前是否在注释内
3 年多之前 回复
u011046042
u011046042 话说这个no是什么意思 求大神指导一下
3 年多之前 回复
u014766078
u014766078   2014.12.08 15:17

找到源文件路径进行读取就行了,,然后在读取时判断是否有这些字符没有就可以了,可以设置一个变量,初值为0,有就置1,没有就0,就可以了,也可以用变量来统计他们出现的次数,如果结果为0,就没有,大于0就有这些字符呗

91program
91program   Ds   Rxr 2014.12.08 09:53

.c 源文件,是以文件的形式存在的。工程所在目录知道不?如果知道,直接按文件进行读取就行了。

不知道你的具体问题在哪里!

u011046042
u011046042 读取一个.C文件,删除该文件中所有的注释语句。然后写入到新的.C文件里。 要求: 删除注释语句功能采用动态链接库形式
3 年多之前 回复
eagleyan
eagleyan   Rxr 2014.12.08 09:55
Prolovecui
Prolovecui   2014.12.08 11:42

这个.C文件应该是以文本的方式保存的,可以直接读取的,分析文件可以用正则等方式。

u011046042
u011046042   2014.12.08 15:58
  1. 读取一个.C文件,删除该文件中所有的注释语句。然后写入到新的.C文件里。 要求:
  2. 删除注释语句功能采用动态链接库形式
u011046042
u011046042   2014.12.08 16:18

#include
int main()
{
FILE *fp;
char buf[100000],ch,flag2;
int i,flag1=0;
if((fp=fopen("带?注痢?释酣?文?件t.c","r"))==NULL)

{
printf("can't open file");
exit(1);
}
buf[0]=fgetc(fp);

i=1;

    while((ch=fgetc(fp))!=EOF)
   {   
           buf[i]=ch;
           if(buf[i-1]=='/'&&ch=='*')      
          {
                  flag1=1;         
                  i--;                   
          }
          if(flag2=='*'&&ch=='/')
          {
                flag1=0;
                i--;
          }
          if(buf[i-1]=='/'&&ch=='/')      
          {
                  flag1=1;         -
                  i--;                   
          }
          if(flag2=='/'&&ch=='n')
          {
                flag1=0;
                i--;
          }
    flag2=buf[i];      
    if(flag1==0)       
          i++;
  }


  buf[i]='\0';         
  fclose(fp);
  if((fp=fopen("带?注痢?释酣?文?件t.c","w+"))==NULL)
  {
        printf("can't open file");
        exit(1);
  }
  fputs(buf,fp);
  fclose(fp);
  return 0;

}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
eclipse在已创建好的目录下创建新项目
1.在Eclipse中点击new 然后选择相应的项目类型,然后
读取eclipse的web项目src目录下的xml文件
今天试了很久都不能成功读取到xml文件。在网上查了一下原来是将项目部署在tomcat服务器上就不存在src这个物理目录,因此需要换一种读取方式。 //首先读取整个xml文件获取全部集合,返回文件实例 public Document getDocument(String url) throws DocumentException{  SAXReader reader = new SAXReader(...
makefile 编译不同目录下的源文件
如题,今天我们来解决 在makefile文件中 如何配置,编译在不同目录下的源文件,因为有时候有这样的场景嘛。测试场景目录结构如下,头文件在include下,源文件在 src下,客户端程序main.c 在 03makefile文件下。如何来编译main.c呢?makefile文件内容文件内容有详细解释哟,由于在不同目录下,那么我们在编译.c文件时,他们的路径就会有多个,模式匹配就要写多个。targ...
在maven项目结构下对于Resources目录下文件的存取
在maven项目中,文件结构如下: proj ---src ----main ----java ----Main.java ----resources ----userFile.properties ----test ----java ----Test.jav
*根据指定项目目录下(可以认为是java源文件目录)中,统计被import最多的类。
尝试着向小黑哥学习,努力加特技。。 但是看起来还是好2B啊 import java.util.HashMap; import java.util.Map; public class record { String [] allrecord; // Map importNumMax=new Map(); // HashMap     importNumMax     =
如何在c语言中源文件调用另一个源文件的函数
在源文件A1.c中调用A2.c 中的函数 有两种方法:   1.在A2.c中有完整的函数定义,在A1.c中添加一下要用到的函数原型(声明)就可以了,例如: 在A2.c中:有函数void A2(){…}; 在A1.c中:在文件前头增加一行:void A2();就可以了      2.把A2.c中完整定义的函数的原型,写到一个A2.h文件中,然后在A1.c的文件头增加#include “A2
C语言中如何在工程中单独运行某个源文件
最近在研究遗传算法,在网上下了一些关于遗传算法的C语言源文件,放在同一个工程中,打算依次运行每个源文件,测试效果。因为每个源文件中都有main方法,且源文件之间可能会有同名变量或同名函数,所以连接时会报错。我的解决办法是将每个源文件中的main方法改成main1、main2、main3......然后将每个源文件中的全局变量和函数改成静态的,最后新增一个包含main方法的源文件,在该main方法中
java项目——读取项目目录下的文件
//文件目录与JsonToJava.class处于同级目录 Reader reader = new InputStreamReader(JsonToJava.class.getResourceAsStream("js/Server2.json"), "UTF-8"); //文件目录与JsonToJava.class处于不同级目录,JsonToJava.class的文件目录层级比/js/Serve
cmake使用总结(二)---工程目录下子目录CMakeLists文件编写(转)
接上篇... 子目录utility 下的CMakeLists.txt 文件如下: --------------------------------------------------------------------------------------------------------------------      #Cmake file for library utility.a
Python读取目录内文件
rootdir = 'E:\\test' list_dir = os.listdir(rootdir) #列出文件夹下所有的目录与文件 for i in range(0,len(list_dir)): path = os.path.join(rootdir,list_dir[i]) if os.path.isfile(path): print list_dir[i]