我已閱讀所有關於此類問題的問題,但我無法修復我的問題。 的問題是,我使用的功能從文件中讀取數據,我得到這個錯誤: 「堆棧各地變量‘P’已損壞」 這是函數c堆棧變量損壞
Firm readFirm(char* name)
{
FILE* file = NULL;
int i = 0;
Firm firm;
char line[100];
char* p[5] = {(char*)malloc(50)};
char tmp[50];
strcpy(tmp,name);
strcat(tmp,".txt");
file = fopen(tmp,"rb");
getline(file,line,100);
strcpy(firm.name,line);
getline(file,line,100);
strcpy(firm.EIK,line);
getline(file,line,100);
split(p,line," ");
for (i = 0 ; p[i] != NULL; i++)
firm.price[i] = atoi(p[i]);
getline(file,line,100);
split(p,line,".");
firm.day = atoi(p[0]);
firm.month = atoi(p[1]);
firm.year = atoi(p[2]);
fclose(file);
return firm;
}
請幫助,因爲我不噸知道如何解決它!
這是分割功能:
char ** split(char *result[], char *w, const char *delim)
{
int i=0;
char *p=NULL;
for(i=0, result[0]=NULL, p=strtok(w, delim); p!=NULL; p=strtok(NULL, delim), i++)
{
result[i]=p;
result[i+1]=NULL;
}
return result;
}
什麼是'的char * P [5] = {(字符*)malloc的(50)};'該怎麼辦? – 2011-05-28 16:47:54
這是一個二維數組,我用它作爲分割函數 – 2011-05-28 16:49:53
這是什麼:char * p [5] = {(char *)malloc(50)};',我想你想要類似auto初始化數組,例如'char arr [10] = {0};'這不行,因爲每個位置都需要單獨的內存地址。 – phoxis 2011-05-28 16:50:19