首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

输出结果全是“烫烫烫”,指点

2012-02-19 
输出结果全是“烫烫烫”,请教高手指点下面是C++大学教程上的一个例子,打开操作的文件clntdata.dat一看,输出

输出结果全是“烫烫烫”,请教高手指点
下面是C++大学教程上的一个例子,打开操作的文件clntdata.dat一看,输出结果是一串" 烫 烫 烫" .请教高手,这是怎么回事啊,应该怎么解决,谢谢了。

// Fig. 14.11: clntdata.h
 // Definition of struct clientData used in
 // Figs. 14.11, 14.12, 14.14 and 14.15.
 #ifndef CLNTDATA_H
 #define CLNTDATA_H

 struct clientData {
  int accountNumber;
  char lastName[15];
  char firstName[10];
  float balance;
 } ;

 #endif
 

// Fig. 14.11: fig14_11.cpp
 // Creating a randomly accessed file sequentially
 #include <iostream.h>
 #include <fstream.h>
 #include <stdlib.h>
 #include "clntdata.h"

 int main()
 {
  ofstream outCredit( "credit.dat", ios::out );

  if ( !outCredit ) {
  cerr << "File could not be opened." << endl;
  exit( 1 );
  }

  clientData blankClient = { 0, "", "", 0.0 };
   
  for ( int i = 0; i < 100; i++ )
  outCredit.write(
  reinterpret_cast<const char *>( &blankClient ),
  sizeof( clientData ) );
  return 0;
 }




[解决办法]
'烫' == '\xCC\xCC'
0xCCCCCCCC意味着未初始化的内存。
你是不是没在你的字符串后面加'\0'?
[解决办法]
你输出了未初始化内存的原因,
[解决办法]
程序没有问题,这是由字节对齐时,填充的三字节不会初始化造成的.
更改结构中的数组大小就没有那个"烫"了
[解决办法]
在头文件中加了
#pragma pack(1)
#pragma pack()
强制使得结构取消三字节的填充就好了,我试过了

热点排行