Правильное использование Чар **

Я новичок в 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 ответа

Почти всегда, когда функция запрашивает char** или ** в общем, вы должны дать ему адрес переменной указателя. В этом случае адрес char*, Адрес оператора &Таким образом, вы должны позвонить getline как это:

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

Есть, конечно, исключения из правила ** функции, требующие адрес, но getline не один из них.

В случае getline для этого требуется адрес памяти, по которому хранится адрес памяти первого символа в строке, которую вы прочитали.

Т.е. для этого нужен указатель на указатель или char**,

Ваша строка будет храниться в *string,

Конечно, вы можете получить эту информацию из документации:).

Другие вопросы по тегам