在文件中读取字符串

时间:2015-08-07 03:02:26

标签: c

我试图将文件的内容读入字符串,并且在为字符串分配内存时遇到问题。我在逐行读取文件,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++;
}

我如何为这种功能重新分配内存?

2 个答案:

答案 0 :(得分:2)

只要您只是在文件中阅读,您就可以立即为文件分配整个空间,如:

struct stat statbuf;
stat("testfile", &statbuf);
char *myhtml = calloc(1,statbuf.st_size);

并且在你完成阅读后可能会休息。 哪个更便宜,因为malloc相当昂贵

答案 1 :(得分:0)

发布的代码有几个“问题”。

而不是我详述每个问题。只需将发布的代码与以下内容进行比较

下面的代码消除了那些'问题'并且更快,因为'计数器'没有被测试也没有增加,也没有'计数器'使堆栈混乱。

Runnable