我是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?
}
答案 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获取此信息:)。