脑子有点乱 请高手帮忙讲一下
#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