我试图将文件的内容读入字符串,并且在为字符串分配内存时遇到问题。我在逐行读取文件,b / c我想跳过前两行。
int counter=1;
char *myhtml;
myhtml=calloc(1,10);
while ((read = getline(&line, &len, fp)) != -1)
{
if (counter>2)
{
//printf("%s",line);
myhtml=realloc(myhtml,sizeof(char)*strlen(line));
strcat(myhtml,line);
}
counter++;
}
我如何为这种功能重新分配内存?
答案 0 :(得分:2)
只要您只是在文件中阅读,您就可以立即为文件分配整个空间,如:
struct stat statbuf;
stat("testfile", &statbuf);
char *myhtml = calloc(1,statbuf.st_size);
并且在你完成阅读后可能会休息。 哪个更便宜,因为malloc相当昂贵
答案 1 :(得分:0)
发布的代码有几个“问题”。
而不是我详述每个问题。只需将发布的代码与以下内容进行比较
下面的代码消除了那些'问题'并且更快,因为'计数器'没有被测试也没有增加,也没有'计数器'使堆栈混乱。
Runnable