这段小程序 运行时在第13行 *pszArray[p]=(char*)malloc(i+1); 报错,请诸位大侠给指正,有什么好的方法吗
这段小程序 运行时在第13行 *pszArray[p]=(char*)malloc(i+1); 报错,请各位大侠给指正,有什么好的方法吗?
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int Split(const char *pszString, char ***pszArray, long *pnCount)
{
int p=0;
int i=0;
for(;*pszString!=0;pszString++)
{
i++;
if(*pszString==';')
{
*pszArray[p]=(char*)malloc(i+1);
strncpy(*pszArray[p++],pszString-i,i);
i=0;
}
}
for(i=0;i<p;i++)
{
printf("%s\r\n",*pszArray[i]);
}
}
int main(int argc,char **argv)
{
int Count;
long *pnCount;
char *pszString,**splitbuffer[32];
pszString=(char*)malloc(32);
memset(pszString,0,32);
pszString=";abc;def;ghi;jk;";
Split(pszString,splitbuffer,pnCount);
return 0;
}
------解决方案--------------------
*pszArray[p] is not a pointer, you should have a:
char** pszarray;
pszarray[p] = malloc(...);
------解决方案--------------------
确定是按照2L的方法改的?
p=(int **)malloc(4*sizeof(int *));
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int Split(const char *pszString, char ***pszArray, long *pnCount)
{
int p=0;
int i=0;
for(;*pszString!=0;pszString++)
{
i++;
if(*pszString==';')
{
*pszArray[p]=(char*)malloc(i+1);
strncpy(*pszArray[p++],pszString-i,i);
i=0;
}
}
for(i=0;i<p;i++)
{
printf("%s\r\n",*pszArray[i]);
}
}
int main(int argc,char **argv)
{
int Count;
long *pnCount;
char *pszString,**splitbuffer[32];
pszString=(char*)malloc(32);
memset(pszString,0,32);
pszString=";abc;def;ghi;jk;";
Split(pszString,splitbuffer,pnCount);
return 0;
}
malloc
------解决方案--------------------
*pszArray[p] is not a pointer, you should have a:
char** pszarray;
pszarray[p] = malloc(...);
------解决方案--------------------
确定是按照2L的方法改的?
p=(int **)malloc(4*sizeof(int *));