正确使用Char **

时间:2015-12-09 12:19:18

标签: c char getline

我是C的新手并遇到了Char **,例如在getline函数中。我找到了关于这种类型的几个主题,但没有一个解释如何实际使用它。我理解Char [],Char *和Char **之间的区别,但是如何访问存储在Char **中的内容?

有人可以向我解释一下吗?提前致谢!! :)

所以,例如,我试图使用getline函数从文件中提取单行并存储它们:

FILE *fp = fopen(myfile,"r");
size_t fsize;
char **string;
ssize_t bytes_read =0; 
while ((bytes_read = getline(string, &fsize, fp))>0) {
// How to handle the content of string now? Is every line from the File stored in the Char** now?
}

2 个答案:

答案 0 :(得分:1)

几乎总是当一个函数一般要求char****时,你应该给它一个指针变量的地址。在这种情况下,char*的地址。运算符的地址为&,因此您应该像这样调用getline

char *string = NULL;
size_t size = 0;
while ((bytes_read = getline(&string, &fsize, fp))>0) {
    // use string here...
}
free(string);

**函数的规则当然有例外,但getline不是其中之一。

答案 1 :(得分:0)

getline的情况下,它需要存储器地址来存储您读过的行中第一个字符的存储器地址。

即。它需要指针指针或char**

您的字符串将存储在*string

当然,您可以从documentation获取此信息:)。