GTK+ 2.0 Tutorial |
||
---|---|---|
GLib |
GLib определяет новый тип, названный GString, который является подобным стандартному C string, но который увеличивается автоматически. Это строковые данные с нулевым символом в конце, что дает вам - защиту от буферного переполнения, программируя ошибки в пределах вашей программы. Это - очень важная особенность, и следовательно я рекомендую, чтобы вы использовали GStrings. Сам GString имеет простое общее определение:
struct GString
{
gchar *str; /* Points to the string's current \0-terminated value. */
gint len; /* Current length */
};
|
Есть множество операций, которые вы можете сделать с GString.
GString *g_string_new( gchar *init );
|
Эта конструкция GString, копирует строковое значение из init в GString и возвращает указатель на него. NULL можно дать как параметр для первоначально пустого GString.
void g_string_free( GString *string,
gint free_segment );
|
Освобождаем память для данного GString. Если free_segment TRUE, то также освобождаются его символьные данные.
GString *g_string_assign( GString *lval,
const gchar *rval );
|
Это копирует символы из rval в lval, удаляя предыдущее содержание lval. Отметьте, что lval будет удлинен по мере необходимости, чтобы вместить содержание строки, в отличие от стандартной функции strcpy().
Остальная часть этих функций должна быть относительно очевидной ("_c" версии принимают символ вместо строки):
GString *g_string_truncate( GString *string,
gint len );
GString *g_string_append( GString *string,
gchar *val );
GString *g_string_append_c( GString *string,
gchar c );
GString *g_string_prepend( GString *string,
gchar *val );
GString *g_string_prepend_c( GString *string,
gchar c );
void g_string_sprintf( GString *string,
gchar *fmt,
...);
void g_string_sprintfa ( GString *string,
gchar *fmt,
... );
|
Timers |
Utility and Error Functions |