C++ 文件类型引发错误:非静态成员函数的使用无效
我试图从结构的特定成员开始,将二进制文件读入结构中。但是,当我尝试执行此操作时,会出现以下错误:C++ 文件类型引发错误:非静态成员函数的使用无效,c++,file,C++,File,我试图从结构的特定成员开始,将二进制文件读入结构中。但是,当我尝试执行此操作时,会出现以下错误: 错误:非静态成员函数的使用无效 我想知道为什么会这样 typedef struct eh { /* ethernet header */ unsigned char eh_dst[6]; unsigned char eh_src[6]; unsigned short eh_type; } ethHead; typedef struct ep {
错误:非静态成员函数的使用无效
我想知道为什么会这样
typedef struct eh { /* ethernet header */
unsigned char eh_dst[6];
unsigned char eh_src[6];
unsigned short eh_type;
} ethHead;
typedef struct ep { /* complete structure of Ethernet packet*/
short ep_ifn; /* originating interface number */
short ep_len; /* length of the packet */
struct eh ep_eh; /* the ethernet header */
char ep_data[1500];
unsigned long ep_crc;
} ethFrame;
ep epReadFromFile(string nameOfFile){
FILE *fp = fopen(nameOfFile.c_str, "rb");
ep EPH;
if (fp != 0) {
fread(&EPH.ep_eh, sizeof(ep), 1, fp);
printf("reading in File");
}
else {
printf("Can't read file");
}
fclose(fp);
return EPH;
}
此外,如果有更好的方法来使用fstream,我将非常感谢您的建议
我已尝试使用标准库执行此操作:
ep epReadFromFile(string nameOfFile){
ifstream input_file(nameOfFile, ios::binary);
ep ethernetPacket;
input_file.read((char*)ðernetPacket.ep_eh, sizeof(eh));
return ethernetPacket;
}
但这无法正确读取文件。您使用的是
nameOfFile.c_str
,它是string类的成员函数
将其更改为
nameOfFile.c_str()
您正在使用的nameOfFile.c_str
,它是string类的成员函数
将其更改为
nameOfFile.c_str()
c++和c是不同的语言。标记已编辑。尽管考虑了所有其他因素,您仍试图读取与整个struct ep
一样大的数据,但您试图将其存储在小于整个struct ep
的空间中。这是不可能的。C++和C是不同的语言。标记已编辑。尽管考虑了所有其他因素,您仍试图读取与整个struct ep
一样大的数据,但您试图将其存储在小于整个struct ep
的空间中。这不可能奏效。