读书人

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

发布时间: 2012-02-19 19:43:38 作者: rapoo

输出结果全是“烫烫烫”,请教高手指点
下面是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()
强制使得结构取消三字节的填充就好了,我试过了

读书人网 >C++

热点推荐