第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

tellg()函數(shù)給出錯誤的文件大???

tellg()函數(shù)給出錯誤的文件大???

C++
慕的地6264312 2019-10-11 14:43:35
我做了一個示例項目,將文件讀入緩沖區(qū)。當我使用tellg()函數(shù)時,它給我的值大于實際從文件中讀取的read函數(shù)的值。我認為有一個錯誤。這是我的代碼:編輯:void read_file (const char* name, int *size , char*& buffer){  ifstream file;  file.open(name,ios::in|ios::binary);  *size = 0;  if (file.is_open())  {    // get length of file    file.seekg(0,std::ios_base::end);    int length = *size = file.tellg();    file.seekg(0,std::ios_base::beg);    // allocate buffer in size of file    buffer = new char[length];    // read    file.read(buffer,length);    cout << file.gcount() << endl;   }   file.close();}主要:void main(){  int size = 0;  char* buffer = NULL;  read_file("File.txt",&size,buffer);  for (int i = 0; i < size; i++)    cout << buffer[i];  cout << endl; }
查看完整描述

3 回答

?
千萬里不及你

TA貢獻1784條經(jīng)驗 獲得超9個贊

void read_file (int *size, char* name,char* buffer)

*buffer = new char[length];

這些行的確看起來像個錯誤:創(chuàng)建一個char數(shù)組并將其保存到buffer [0] char。然后,您讀取要緩沖的文件,該文件仍未初始化。


您需要buffer通過指針傳遞:


void read_file (int *size, char* name,char** buffer)

*buffer = new char[length];

或通過引用(這是c ++的方式,并且不太容易出錯):


void read_file (int *size, char* name,char*& buffer)

buffer = new char[length];

...


查看完整回答
反對 回復(fù) 2019-10-11
  • 3 回答
  • 0 關(guān)注
  • 881 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號