我有這樣的代碼:strcpy的字符指針中止
char **arr;
char* line=NULL;
int i=0;
size_t len=0;
ssize_t read1;
fp=fopen("list.txt","r");
if(fp==NULL)
exit(EXIT_FAILURE);
while((read1=getline(&line,&len,fp))!=-1)
i++;
fclose(fp);
fp=fopen("list.txt","r");
if(fp==NULL)
exit(EXIT_FAILURE);
arr=(char**)malloc(i*sizeof(char*)); // i is a variable i use to know the number of lines
i=0;
while((read1=getline(&line,&len,fp))!=-1)
{
line[strlen(line)]='\0';
arr[i]=(char*)malloc(strlen(line)+1);
strcpy(arr[i],line);
i++;
}
當我嘗試strcpy
程序crashes.Is一個malloc
問題? 我很確定i
夠大。 line
爲char*
,最初爲NULL
。
編輯:我忘了這個程序是在Qt中。
您不需要在C程序中投射'malloc()'的返回值。 –
***「'i'是我用來知道行數的變量」*** - 那麼它爲什麼命名爲'i'而不是'numberOfLines' /'linesNumber'? – LihO
如何定義「行」?什麼是len的定義/價值? –