0

Im writing a program in C (eclipse in linux) so I need to open a big text file and read it (and than try with diffrent size of buffer each time)

Anyways, this is the code and I don't understand why Im getting segmentation fault from the open function

int main(void)
{
    int fd;
    char* buff[67108864];
    FILE *testfile;
    double dif;
    fd = open("testfile.txt", O_RDONLY);
    if (fd>=0) {
        read(fd,buff,67108864);
        close(fd);      }

    return 0;
}

I have edited my question but now if I change my buffer to the biggest size I need (67108864 bytes) im still getting segmentation fault...

4

3 回答 3

4
char buff;

应该是一个指针

char *buff;

此外,在阅读之后,read(fd,buff,(sizeof(char)));您应该分配更多内存来使用 realloc 进行缓冲。

于 2013-03-25T14:54:21.027 回答
2

好吧,如果您想将内存分配给buff,则需要将其设为指针..

char* buff;

还要注意你只分配一个字符..你应该考虑一下,我认为你想使用更多的内存..

另一个常见的事情是不使用动态内存进行文件读取..

尝试:

char buff[100]; 

然后只是相同的代码...

read(fd,buff,100));

然后继续读取直到查找完成,读取返回实际读取的字节数。

也像上面评论的那样,您在初始化它之前使用 testfile ..这也是访问冲突

于 2013-03-25T14:54:16.697 回答
0

改变

char* buff[67108864]

char buff[67108864]

你需要的是一个字符数组,而不是一个字符点数组。

于 2013-03-25T17:49:22.047 回答