| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1233 人关注过本帖
标题:高手求助~~编译出错,记忆体不能written,请指出问题所在!
只看楼主 加入收藏
retsingle
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2011-9-19
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:19 
高手求助~~编译出错,记忆体不能written,请指出问题所在!
//cmp.c  讀ID3V2並歸檔相應信息。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//#include<ctype.h>
#define SIZE 1024

void search(FILE *fp1,FILE *fp2,FILE *fp3,FILE *fp4)
{
  int count,i,j=0,flag=0;
  char ch=0;
  char pear[7][4]={"TALB","TYER","TCON","TPE1","TIT2","TRCK","USLT"},apple[5*SIZE];
 
  
  rewind(fp2);
  fputc('\t',fp2);    //write into sql1.txt
  rewind(fp1);
  ch=fgetc(fp1);
  while('%'!=ch&&(flag!=1))

  {
   
    count=0;
   
    while((((char)9)!=ch)&&('%'!=ch))
    {      
      apple[count]=ch;
//      printf("%c",apple[count]);   //ok
      ++count;
      ch=fgetc(fp1);
    }//whileover                   //ok
   
//    printf("%ld ",ftell(fp1));
    if(0==(memcmp(apple,pear[0],4))) //ok
    {
//      printf("compare right!");     //ok
      flag=1;
      for(i=0;i<=count-4;++i)
      {
        apple[i]=apple[i+5];
      }
      fwrite(apple,(count-4),1,fp2);   //第一字段信息已輸出
      fputc((char)9,fp2);
//     
      
//      
      }//ifover
    memset(apple,0,sizeof(apple));

//    while(i>totalsize-10) break;
   
    ch=fgetc(fp1);
  }//whileover

   rewind(fp1);
   ch=fgetc(fp1);
  while('%'!=ch)

  {
   
    count=0;
   
    while(((char)9)!=ch&&('%'!=ch))
    {      
      apple[count]=ch;
//      printf("%c",apple[count]);   //ok
      ++count;
      ch=fgetc(fp1);
    }//whileover                   //ok
   
   
//    printf("%ld ",ftell(fp1));
    if(0==(memcmp(apple,pear[1],4))) //ok
    {
//      printf("compare right!");     //ok
      for(i=0;i<=count-4;++i)
      {
        apple[i]=apple[i+5];
      }
      fwrite(apple,count-4,1,fp2);   //第一字段信息已輸出
      fputc((char)9,fp2);
//      ++j;
      
//      if(j>=3)  break;
      }//ifover
    memset(apple,0,sizeof(apple));
//    printf("not found!\n");
//    if(j>=3)  break;
//    while(i>totalsize-10) break;
   
    ch=fgetc(fp1);
  }//whileover
   rewind(fp1);
   ch=fgetc(fp1);
  while('%'!=ch)

  {
   
    count=0;
   
    while(((char)9)!=ch&&('%'!=ch))
    {      
      apple[count]=ch;
//      printf("%c",apple[count]);   //ok
      ++count;
      ch=fgetc(fp1);
    }//whileover                   //ok
   
   
//    printf("%ld ",ftell(fp1));
    if(0==(memcmp(apple,pear[2],4))) //ok
    {
//      printf("compare right!");     //ok
      for(i=0;i<=count-4;++i)
      {
        apple[i]=apple[i+5];
      }
      fwrite(apple,count-4,1,fp2);   //第一字段信息已輸出
      fputc((char)9,fp2);
//      ++j;
      
//      if(j>=3)  break;
      }//ifover
    memset(apple,0,sizeof(apple));
//    printf("not found!\n");
//    if(j>=3)  break;
//    while(i>totalsize-10) break;
   
    ch=fgetc(fp1);
  }//whileover
//    fputc('\n',fp2);
   
   
   fputc('\t',fp3);  // writer into sql2.txt
   rewind(fp1);
   ch=fgetc(fp1);
  while('%'!=ch)

  {
   
    count=0;
   
    while(((char)9)!=ch&&('%'!=ch))
    {      
      apple[count]=ch;
//      printf("%c",apple[count]);   //ok
      ++count;
      ch=fgetc(fp1);
    }//whileover                   //ok
   
   
//    printf("%ld ",ftell(fp1));
    if(0==(memcmp(apple,pear[3],4))) //ok
    {
//      printf("compare right!");     //ok
      for(i=0;i<=count-4;++i)
      {
        apple[i]=apple[i+5];
      }
      fwrite(apple,count-4,1,fp3);   //第一字段信息已輸出
      fputc((char)9,fp3);
      fputc((char)9,fp3);
      fputc((char)9,fp3);
//      ++j;
      
//      if(j>=3)  break;
      }//ifover
    memset(apple,0,sizeof(apple));
//    printf("not found!\n");
//    if(j>=3)  break;
//    while(i>totalsize-10) break;
   
    ch=fgetc(fp1);
  }//whileover
  fputc('\t',fp4);  // writer into sql3.txt
   rewind(fp1);
   ch=fgetc(fp1);
  while('%'!=ch)

  {
   
    count=0;
   
    while(((char)9)!=ch&&('%'!=ch))
    {      
      apple[count]=ch;
//      printf("%c",apple[count]);   //ok
      ++count;
      ch=fgetc(fp1);
    }//whileover                   //ok
   
   
//    printf("%ld ",ftell(fp1));
    if(0==(memcmp(apple,pear[4],4))) //ok
    {
//      printf("compare right!");     //ok
      for(i=0;i<=count-4;++i)
      {
        apple[i]=apple[i+5];
      }
      fwrite(apple,count-4,1,fp4);   //第一字段信息已輸出
      fputc((char)9,fp4);
//      ++j;
      
//      if(j>=3)  break;
      }//ifover
    memset(apple,0,sizeof(apple));
//    printf("not found!\n");
//    if(j>=3)  break;
//    while(i>totalsize-10) break;
   
    ch=fgetc(fp1);
  }//whileover
//   fputc('\t',fp4);  // writer into sql3.txt
   rewind(fp1);
   ch=fgetc(fp1);
  while('%'!=ch)

  {
   
    count=0;
   
    while(((char)9)!=ch&&('%'!=ch))
    {      
      apple[count]=ch;
//      printf("%c",apple[count]);   //ok
      ++count;
      ch=fgetc(fp1);
    }//whileover                   //ok
   
   
//    printf("%ld ",ftell(fp1));
    if(0==(memcmp(apple,pear[5],4))) //ok
    {
//      printf("compare right!");     //ok
      for(i=0;i<=count-4;++i)
      {
        apple[i]=apple[i+5];
      }
      fwrite(apple,count-4,1,fp4);   //第一字段信息已輸出
      fputc((char)9,fp4);
//      ++j;
      
//      if(j>=3)  break;
      }//ifover
    memset(apple,0,sizeof(apple));
//    printf("not found!\n");
//    if(j>=3)  break;
//    while(i>totalsize-10) break;
   
    ch=fgetc(fp1);
  }//whileover
//   fputc('\t',fp4);  // writer into sql3.txt
/*   rewind(fp1);
   ch=fgetc(fp1);
  while('%'!=ch)

  {
   
    count=0;
   
    while(((char)9)!=ch&&('%'!=ch))
    {      
      apple[count]=ch;
//      printf("%c",apple[count]);   //ok
      ++count;
      ch=fgetc(fp1);
    }//whileover                   //ok
   
   
//    printf("%ld ",ftell(fp1));
    if(0==(memcmp(apple,pear[6],4))) //ok
    {
      printf("compare right!");     //ok
      for(i=0;i<=count-4;++i)
      {
        apple[i]=apple[i+5];
      }
      fwrite(apple,count-4,1,fp4);  */ //第一字段信息已輸出
      fputc((char)9,fp4);
      fputc((char)9,fp4);
      fputc((char)9,fp4);
      fputc((char)9,fp4);
//      fputc((char)9,fp4);
//      ++j;
      
//      if(j>=3)  break;
/*      }//ifover
    memset(apple,0,sizeof(apple));
//    printf("not found!\n");
//    if(j>=3)  break;
    while(i>totalsize-10) break;
   
   
  }//whileover*/
ch=fgetc(fp1);
//  fputc('\n',fp2);
}//oversearch




int main(void)
{
  FILE *fp1,*fp2,*fp3,*fp4;
 
  if(NULL==(fp1=fopen("test.txt","at+")))
  {
       printf("cannot write the file\n");
       exit(0);
  }
  if(NULL==(fp2=fopen("sql1.txt","at+")))
  {
       printf("cannot write the file\n");
       exit(0);
  }
  if(NULL==(fp3=fopen("sql2.txt","at+")))
  {
       printf("cannot write the file\n");
       exit(0);
  }
  if(NULL==(fp4=fopen("sql3.txt","at+")))
  {
       printf("cannot write the file\n");
       exit(0);
  }
  
   
   search(fp1,fp2,fp3,fp4);
   

   
   fclose(fp2);
   fclose(fp3);
   fclose(fp4);
   fclose(fp1);
   return 0;
}
搜索更多相关主题的帖子: 信息 written include search 记忆体 
2011-09-19 11:30
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:7 
  char pear[][5]={"TALB","TYER","TCON","TPE1","TIT2","TRCK","USLT"}, apple[5*SIZE];

我们都在路上。。。。。
2011-09-19 11:45
retsingle
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2011-9-19
收藏
得分:0 
回复 2楼 hellovfp
您好!照着你的改过了,问题还存在,能讲清楚一点么?
2011-09-19 11:53
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:7 
樓主能否提供一下ID3V2的資料呀?

授人以渔,不授人以鱼。
2011-09-19 11:57
retsingle
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2011-9-19
收藏
得分:0 
回复 4楼 TonyDeng
能不能给个邮箱我,整个程序的资料传给你,万分感激!
2011-09-19 12:03
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
回复 3楼 retsingle
我这里VC6编译就一个错,改了就通过了。还能运行,除了生成了几个sqlX文件,没有发现有你说有运行问题。

我们都在路上。。。。。
2011-09-19 12:27
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:7 
回复 楼主 retsingle
不管是啥错误,贴出来呀,让我这手机党怎么看呀

总有那身价贱的人给作业贴回复完整的代码
2011-09-19 13:18
retsingle
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2011-9-19
收藏
得分:0 
回复 6楼 hellovfp
我也是用VC++6.0编译的,编译的时候没错,运行的时候显示("0x00401138"指令参考的"0x00130000"记忆体。该记忆体不能为“written.”),第一次运行的时候程序是可以通过的,但第二天就不行了,是不是内存溢出了?
2011-09-19 13:19
retsingle
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2011-9-19
收藏
得分:0 
回复 6楼 hellovfp
就改了上面你说的那一个吗?
2011-09-19 13:28
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
回复 8楼 retsingle
没有发现,或许是你自己把大部分代码都注释了的关系。
如果不知道倒底是哪里出了问题,你可以在一些语句上下断点,从上到下用二分法下断点,然后找到是执行到哪里出了这个内存不能为读的情况,分析出情况的原因,多半是写数据的时候越界照成的。

我们都在路上。。。。。
2011-09-19 13:29
快速回复:高手求助~~编译出错,记忆体不能written,请指出问题所在!
数据加载中...
 
   



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

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