红色激情 发表于 2007-8-6 20:43:40

星迷ZZ 发表于 2007-8-6 21:08:37

应该没溢出吧,都没到6KB

红色激情 发表于 2007-8-6 21:39:32

leesoft 发表于 2007-8-6 23:35:03

注意到:
char s,buf;
memset(buf,'a',100);
strlen(buf)

字符串必须以0结束!
因为buf的100个字节全是‘a',不含0,这样
strlen(buf)得到的将不是100,而是比100大的某个不确定数字!

星迷ZZ 发表于 2007-8-7 08:57:09

LEE的所言极是,是我疏忽了,不过问题依然存在,单独运行那么一小段代码好使,放到主程序中就写不进去了,晕晕的~
我想问问各位编程老手有没遇到过这样的问题,你们是如何把一个int型的数组输出到文本文件中的,并且打开记事本能看到数字而不是字符乱码,是用sprintf()吗?先用strcat()将所有的数字输出到char数组,再一次写入文件?

leesoft 发表于 2007-8-7 09:02:47

主程序必有bug!
帖出来大家看看

星迷ZZ 发表于 2007-8-7 09:46:57

//问题出在这里!
int savetxt()
{
no=1;
memset(buf,0,400);
Block(82,53,159,79,0);
for(;;)
{
   TextOut(84,53,"选择图片编号:",1);
   sprintf(s,"〈 %d 〉",no);
   TextOut(100,66,s,1);
   Refresh();
   key=getchar();
   if(key==key_esc)
    return 0;
   if(key==key_left)
   {
    no--;
    if(no<1)
      no=20;
   }
   if(key==key_right)
   {
    no++;
    if(i>20)
      no=1;
   }
   if(key==key_enter)
   {
    for(k=1;k<=height;k++)
    {
      for(j=1;j<=width/8;j++)
      {
       sum=0;
       for(i=1;i<=8;i++)
      sum=data*(256>>i)+sum;
       ch10to16(sum);
       strcat(buf,s);
      }
    }
    sprintf(s,"/文本文件/%d.txt",no);
    if(fp=fopen(s,"w")==0)
      return 0;
    fwrite(buf,1,strlen(buf),fp);
    fclose(fp);
    return 1;
   }      
}
}

leesoft 发表于 2007-8-7 09:48:48

代码走样了
不能用

星迷ZZ 发表于 2007-8-7 10:04:36

怎么上传附件,我找不着
代码复制到IDE里能用的

yan 发表于 2007-8-7 14:24:18

savetxt函数里的if(fp=fopen(s,"w")==0)return 0;有问题。
&#39;=&#39;的优先级低于&#39;==&#39;,相当于执行if(fp=(fopen(s,"w")==0))return 0;。看清楚了,这时fp为0,所以fwrite函数和fclose函数执行了也是无效的。

leesoft 发表于 2007-8-7 14:40:09


还是ls眼力好啊
fopen(s,"w")==0为假,所以
fp=fopen(s,"w")==0相当于
fopen(s,"w");
fp=0;
而0为非法文件句柄,所以对fp做fwrite是会失败的

星迷ZZ 发表于 2007-8-7 17:53:15

问题解决了
感谢CCTV,感谢MTV
感谢yan,LEE,红鸡……
上帝啊,让此帖沉下去吧!

星迷ZZ 发表于 2007-8-6 20:32:09

[求教]问个lava1.0中写文件的问题

先看代码:
int no;
char fp;
char s,buf;
void main()
{
    no=1;
    memset(buf,&#39;a&#39;,100);
    sprintf(s,"/文本文件/%d.txt",no);
    fp=fopen(s,"w");
    fwrite(buf,1,strlen(buf),fp);
    fclose(fp);
    printf("%s",buf);
    getchar();
   
}
没问题吧,可以正常把buf中的字符写入到文本中。
但是我把这段代码写到另个比较长的lava程序中(该程序只读写1个文件),编译通过,运行,发现文本文件中没任何字符。
用星端和pc端的编译器结果都一样,百思不得其解……
页: [1]
查看完整版本: [求教]问个lava1.0中写文件的问题