免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1142 | 回复: 2
打印 上一主题 下一主题

大家帮忙看一下这个有关文件的C程序,实在是不知道错在哪 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-04-18 13:42 |只看该作者 |倒序浏览
程序写的比较简单,但是错误却发现不了
程序用于打开词法分析程序的文件,用于查看结果的.
但是,我用记事本打开和VC打开,里面的内容都和预想的一样,
但用这个程序却不行,
它只显示了一小部分,没有全部显示,
文件中有多于30个的记录,可是它只显示到27就结束了
  1. #include <iostream>;
  2. #include <fstream>;
  3. using namespace std;
  4. struct signtable{  //定义符号表文件的结构
  5.   int serialno;    //序号
  6.   int type;        //类型号
  7.   char name[30] ;  //名字
  8.   }signs;
  9. struct wordsn{     //单词序列文件结构
  10.   int label;       //单词序号
  11.   char name[30];   //名字
  12.   int code;        //单词的类型码
  13.   int addr;        //单词地址
  14.   }words;
  15. void main()
  16. {ifstream word;   //单词序列表文件
  17. ifstream sym; //单词表文件
  18. int i=0;
  19. word.open("wordsnfile.txt",ios::in); //单词序列文件
  20. sym.open("symtablefile.txt",ios::in);//
  21.   cout<<"words\n";
  22. while(!word.eof())
  23.    {word.read((char *)&words,sizeof(words));
  24.     if(!word.eof())
  25.         cout<<words.name<<" "<<words.addr<<" "<<words.code<<" "<<words.label<<endl;
  26.         i++;}
  27.         cout<<i;
  28.         cout<<"symbal\n";
  29.         i=0;
  30. while(!sym.eof())
  31.    {sym.read((char*)&signs,sizeof(signs));
  32.     if(!sym.eof())
  33.     cout<<signs.name<<" "<<signs.serialno<<" "<<signs.type <<endl;
  34.         i++;}
  35.         cout<<i;
  36.         }
复制代码

论坛徽章:
0
2 [报告]
发表于 2005-04-18 14:10 |只看该作者

大家帮忙看一下这个有关文件的C程序,实在是不知道错在哪

我猜是words这个结构体,名字放在中间,这样,可能不对!
如果名字没有30个字节?

(我的能力有限)

论坛徽章:
0
3 [报告]
发表于 2005-04-18 14:19 |只看该作者

大家帮忙看一下这个有关文件的C程序,实在是不知道错在哪

我试试
在生成文件的过程中
words.name[]中不够30的我全部是填0进去了
而且在记事本中打开记录全在,
本想传文件上来,可是不能传,
我的QQ是37140420
有兴趣的我可以把生成的文件传给你们.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP