Код:
Код: Выделить всё
#define SZSIZE 100
char sz[SZSIZE];
strcpy(sz, pszSomeData);Совсем не вариант, который тем не менее часто используют (100 - как пример):
Код:
Код: Выделить всё
char sz[SZSIZE*100];
strcpy(sz, pszSomeData);Более приемлимый вариант:
Код:
Код: Выделить всё
char sz[SZSIZE];
strncpy(sz, pszSomeData, sizeof(sz));Но тут есть неприятность - последний символ может оказаться не 0. Тогда последующий strlen(sz) может дать сбой. Очевидно, если предусмотреть и эту возможность, надо предохраниться, дописав нулик руками. Но вот какой вариант "красивее"?
Такой:
Код:
Код: Выделить всё
char sz[SZSIZE];
strncpy(sz, pszSomeData, sizeof(sz) - 1);
strcat(sz, "\0");Или такой:
Код:
Код: Выделить всё
char sz[SZSIZE + 1];
strncpy(sz, pszSomeData, SZSIZE);
sz[SZSIZE] = '\0';Или такой:
Код:
Код: Выделить всё
char sz[SZSIZE];
strncpy(sz, pszSomeData, sizeof(sz));
sz[SZSIZE - 1] = '\0';Может, ещё кто какой вариант знает?
Добавлено:
О, забыл.
Код:
Код: Выделить всё
char sz[SZSIZE];
memset(sz, 0, sizeof(sz));
strncpy(sz, pszSomeData, sizeof(sz) - 1);Очевидно, что memset придётся вызывать каждый раз перед копированием.
