读书人

脑子有点乱 请高手帮忙讲一下解决办法

发布时间: 2012-06-06 16:44:11 作者: rapoo

脑子有点乱 请高手帮忙讲一下
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

#define _MAX_PATH 20
const char* protocol = "d:\\test.txt";

void AddItem(char *entry,char *root)
{
char path[_MAX_PATH];
strcpy(path, root);
strcat(path, entry);
}
int main(int argc, char *argv[])
{
FILE *fp = NULL;
char path[_MAX_PATH];
char key[_MAX_PATH];
char root[_MAX_PATH];
char file[_MAX_PATH];
char value[_MAX_PATH];
int len;

strcpy(path,protocol);
strcpy(root,path);
fp = fopen(path,"rb");
if(!fp)
exit(-1);

file[0] = 0;
len = -1;
while(!feof(fp))
{
if(fscanf(fp,"%[^=]=%[^\n\r] ",value))
{
AddItem(file,root);
strcpy(file, value);//1,请问这里的file会受到AddItem内file数值变化的影响吗?
// 2,是否会造成缓冲区溢出?
continue;
}
}
cout<<sizeof(file)<<endl;
fclose(fp);
return 0;
}

[解决办法]
//1,请问这里的file会受到AddItem内file数值变化的影响吗?
不会,被覆盖了

// 2,是否会造成缓冲区溢出?
有可能,建议用strncpy

读书人网 >VC/MFC

热点推荐