Pointers 为什么这段代码在windows中运行良好,但在linux中却不运行?
我面临一个问题,我在windows中编写此代码,它读取文件的每一行。它在Windows7中运行良好,但在liunx中不起作用。我真的搞不懂。有人能帮我吗Pointers 为什么这段代码在windows中运行良好,但在linux中却不运行?,pointers,readfile,fgets,Pointers,Readfile,Fgets,我面临一个问题,我在windows中编写此代码,它读取文件的每一行。它在Windows7中运行良好,但在liunx中不起作用。我真的搞不懂。有人能帮我吗 list< list<string> > getTransRecordsFormFile(const char* fileName) { list< list<string> > res; FILE* f = fopen(fileName,"r"); if(f == NUL
list< list<string> > getTransRecordsFormFile(const char* fileName)
{
list< list<string> > res;
FILE* f = fopen(fileName,"r");
if(f == NULL) {
cout << "load input file failed!" << endl;
exit(0);
}
else {
char *buffer;
while(fgets(buffer,MAX_LENTH,f) != NULL) {
list<string> v = splitStr(buffer, SPLITCHAR);
res.push_back(v);
}
}
fclose(f);
return res;
}
listgetTransRecordsFormFile(const char*fileName)
{
listres;
文件*f=fopen(文件名,“r”);
如果(f==NULL){
cout在您的代码中,缓冲区
是单元化的。因此,它很可能(而且很可能)指向某个无效的内存位置。访问无效内存会调用。一旦您的程序点击UB,绝对没有任何保证
在使用fgets()
中的有效内存位置之前,需要使buffer
指向某个有效的内存位置,这显然不是C!