我有这样的代码: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的定义/价值? –