Правильное использование Чар **
Я новичок в 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
,
Конечно, вы можете получить эту информацию из документации:).