步进电机控制方法:求一段C语言程序

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 10:30:46
题目是这样的:假如给出一段C语言程序,好的C语言程序有会有一些注释的,请编译一段C语言程序,提取这些注释,请各位高手帮忙啊!!!在此谢谢了,如果成功了,我将追加50分!!!
谢谢kinedy的提醒.
首先是要有一段完整的有注释的程序,无论是怎么样的都行,只要有注释就行,把这段程序保存在一个文件夹了.这个文件夹可以自己建,重点要做的是把提取后的注释放在一个指定的文件里,这个文件夹也可以自己建,至于怎么放嘛,只要能放进去就行!!!
还有,可不可以把具体实现的代码放上去,再次谢谢了,我真的很需要这段程序.可能我把问题描述的不是很清楚,如有不详之处,请恕包含啊

本程序能够提取所有C/C++程序的注释
即/*......*/之间和//......之后的部分

#include <stdio.h>

main()
{
FILE *fp,*fs;
char cFName[80],front,data[256],cSName[80];
int j=0;
printf ("Please Input Source File:");
scanf ("%s",cFName);
printf ("Please Input Save File:");
scanf ("%s",cSName);
fp=fopen(cFName,"r");
fs=fopen(cSName,"w");
if (fp==NULL || fs==NULL) /*打开文件错误*/
return 1;
front=fgetc(fp);
while (front!=EOF)
{
while (front=='/' && front!=EOF)
{
j=0; /*计数器复位*/
front=fgetc(fp);
if (front=='/') /*为32位注释“//”*/
{
while ((front=fgetc(fp))!='\n')
data[j++]=front;
data[j]='\0';
fprintf (fs,"//%s\n",data);
}
else if (front=='*')
{
bk: while ((front=fgetc(fp))!='*' && front!=EOF)
jp: data[j++]=front;
if ((front=fgetc(fp))!='/' && front!=EOF) /*不完整的注释*/
{
data[j++]='*';
if (front=='*') goto jp;
data[j++]=front;
goto bk;
}
data[j]='*';data[j+1]='/';data[j+2]='\0';
fprintf (fs,"/*%s\n",data);
}
}
front=fgetc(fp);
}
fclose (fp);
fclose (fs);
puts ("Dumped Successfully!");
}

/*
取得文件中的注释。并且保存在c:\out.txt文件中。
*/

#include<stdio.h>
#include<string.h>

void main()
{
FILE *fp,*fp1;
char filename[30], context[2000], get[80];
int i=0,p=0,ci=0,geti=0,getj=0;

printf("enter c file name : ");
scanf("%s",filename);

if((fp=fopen(filename,"r"))==NULL)
{
printf("can not open the file: %s ");
}

if((fp1=fopen("c:\\out.txt","w"))==NULL)
{
printf("can not open the file: c:\\out.txt ");
}

while(!feof(fp))
{

i=0;
fscanf(fp,"%s",get);
while(i<=strlen(get))
{

if(p==0)
if(get[i]=='/')
if(get[i+1]=='*')
{
p=1;
}

if(p==1)
{
while(i<=strlen(get))
{
if(get[i]=='*')
{
if(get[i+1]=='/')
{
context[ci++]='*';
context[ci++]='/';
p=0;
break;
}
}
context[ci++]=get[i++];
}

if(p==0) /*即已经找完当前的注释对了*/
{
context[ci]='\0';
printf("%s\n",context);
fprintf(fp1,"%s\n",context);
ci=0;
}
else
context[ci-1]='\n';
}
i++;
}
}
fclose(fp);
fclose(fp1);
}

例如:在c:盘下有一个名为a.c的文件
enter c file name :
c:\a.c
接下来它会输出它里面的注释。

大哥你的问题相当于编写一个语法检查器应该可以的吧,不过你的设计要求不明了,提取后放到哪里?
怎么放?你可以自己分析一下这个需求再上来问比较好!

打开文件
搜索这个文件
如果str = "//"
把一行都保存到另一个文本文件里
如果str = "/*"
保存这个指针,用另一个指针找到"*/"把中间的东东保存到文件里

这个不会 啊 爱莫能助了