Я не могу избавиться от предупреждения компилятора «присваивание делает указатель из целое число без приведения» в следующем случае:C, сохранения/чтения NULL с текстовым файлом
int sql_user(char** mysql_user_name, char** mysql_password, char** mysql_server, char **mysql_serverport, char** mysql_socket)
{
int retval = -1;
char **sub;
char *contents;
if(g_file_get_contents("mysqlsrv.def", &contents, NULL, NULL))
{
sub = g_strsplit(contents, "\n", -1);
//here compiler warning: assignment makes pointer from integer without a cast
*mysql_user_name = sub[0];
*mysql_password = sub[1];
*mysql_server = sub[2];
*mysql_serverport = sub[3];
*mysql_socket = sub[4];
if (!strlen(sub[4])) *mysql_socket = NULL;
retval = 0;
}
return retval;
}
Additionaly, в суб [4] является пустая строка (""). Есть здесь способ сохранить NULL вместо того, чтобы текстовый файл, поэтому он может быть прочитанные позже как NULL без If (! StrLen ... состояние?
Любая помощь будет оценена.
не
g_strsplit объявлен в и я использовать эту функцию allaround мой проект из нескольких файлов, так У меня нет проблем с возвратом данных. Вот вызов функции: sql_user (& mysql_user_name, & mysql_password, & mysql_server, & mysql_serverport, & mysql_socket); –
Если вы используете это со всех сторон, у вас будет утечка памяти. Я не в курсе гномов, но быстрый google (http://developer.gnome.org/glib/2.30/glib-File-Utilities.html#g-file-get-contents) говорит, что вам нужно использовать g_free() на «содержании», когда вы закончите + g_strfreev() по результату g_strsplit(), когда закончите. Я бы предложил скопировать нужные вам значения и вызвать эти бесплатные методы внутри вашего метода выше. – John3136