tablica znakow w strukturze

0

witam. mam sobie strukture..


struct A{

int x;
char znak;
char imie[10];
};
int main()
{
 A zmienna;
zmienna.x=4//mozna tak nadac od razu wartosc
zmienna.znak='a' //tak tez mozna

//i moj problem polega na tym, ze chce sobie tez od razu nadac jakies tam pewne imie, ale..
zmienna.imie[10]="JAKIES"// blad nie wiem jak to zapisac zebym mogl wpisac od razu jakis napis.



0

Użyj http://www.cplusplus.com/reference/clibrary/cstring/strncpy/

strncpy(zmienna.imie, "JAKIES", 7);

Pamiętaj o znaku \0 - dlatego 7 a nie 6.

Tutaj jednak ma to średni sens i dużo lepsza jest odpowiedź @Rev niżej.

1

W tym wypadku nie ma potrzeby pamiętać o \0 ani podawać ilości znaków. strcpy skopiuje również \0 - literał zawsze będzie go miał. Jeżeli chcemy zabezpieczyć się przed przepełnieniem bufora to raczej należy zaproponować strncat oraz przed jego wywołaniem pierwszy znak bufora ustawić na \0.

zmienna.imie[0] = '\0';
strncat(zmienna.imie, "dluzszy napis niz bufor", sizeof(zmienna.imie) - 1);
1

W tym wypadku nie ma potrzeby pamiętać o \0 ani podawać ilości znaków. strcpy skopiuje również \0 - literał zawsze będzie go miał. Jeżeli chcemy zabezpieczyć się przed przepełnieniem bufora to raczej należy zaproponować strncat oraz przed jego wywołaniem pierwszy znak bufora ustawić na \0.

W sumie można też tak:

strncpy(zmienna.imie, "JAKIES ZA DLUGIE IMIE OJEJ", sizeof(zmienna.imie));
zmienna.imie[sizeof(zmienna.imie) - 1] = '\0';

Chociaż to będzie wolniejsze niż strncat jeżeli źródłowy string będzie krótszy niż bufor.

1 użytkowników online, w tym zalogowanych: 0, gości: 1