无法弄清楚什么是错的,我似乎没有从恐惧中得到任何东西.
#pragma once
#ifndef _PORT_
#define _PORT_
#include <string>
#ifndef UNICODE
typedef char chr;
typedef string str;
#else
typedef wchar_t chr;
typedef std::wstring str;
inline void fopen(FILE ** ptrFile, const wchar_t * _Filename,const wchar_t * _Mode)
{
_wfopen_s(ptrFile,_Filename,_Mode);
}
#endif
#endif
Run Code Online (Sandbox Code Playgroud)
File * f = new File(fname,FileOpenMode::Read);
chr *buffer;
buffer = (wchar_t*)malloc(f->_length*2);
for(int i=0;i<f->_length;i++)
{
buffer[i] = 0;
}
f->Read_Whole_File(buffer);
f->Close();
for(int i=0;i<f->_length;i++)
{
printf("%S",buffer[i]);
}
free(buffer);
Run Code Online (Sandbox Code Playgroud)
void Read_Whole_File(chr *&buffer)
{
//buffer = (char*)malloc(_length);
if(buffer == NULL)
{
_IsError = true;
return;
}
fseek(_file_pointer, 0, SEEK_SET);
int a = sizeof(chr);
fread(&buffer,_length ,sizeof(chr) , _file_pointer);
}
Run Code Online (Sandbox Code Playgroud)
你在整个地方混合指针和引用.
你的函数只需要一个指向缓冲区的指针:
void Read_Whole_File(char *buffer) { ... }
Run Code Online (Sandbox Code Playgroud)
你应该按原样传递指针fread(),不要取指针的地址:
size_t amount_read = fread(buffer, _length, sizeof *buffer, _file_pointer);
Run Code Online (Sandbox Code Playgroud)
还要记住:
ptr某种类型的指针,则可以使用sizeof *ptr并删除重复类型名称的需要.malloc().| 归档时间: |
|
| 查看次数: |
1202 次 |
| 最近记录: |