Załadowanie liter do zmiennej char w strukturze.

0

Dlaczego mi się to nie kompiluje ?

 struct Nazwa{
        char imie[80];
        int wiek;
    };

    struct Nazwa Tomek;
    Tomek.imie = 'a'; 
0

Tomek.imie jest typu char * a 'a' jest typu char. W jaki sposób miałoby się to kompilować?

Chciałeś zrobić tak:

strcpy(Tomek.imie, "a");

Btw.
Kopiowanie tablic znaków w C to nie taka banalna rzecz - ani strcpy ani strncpy samo nie gwarantuje, że tablica będzie poprawnie zakończona znakiem '\0'. Trzeba zapewnić to ręcznie i chyba najpopularniejszym rozwiązaniem jest użycie strnact:

void copyString(const char *restrict src, char *restrict dest, size_t destSize) {
  if(destSize > 0) {
    dest[0] = '\0';
    strncat(dest, src, destSize - 1);
  }
}

Zmieniłem kolejność argumentów na moim zdaniem bardziej naturalną w porównaniu do strncpy. Funkcja mogła by też zwracać informacje o tym, czy kopiowanie udało się w całości czy bufor był za mały. (Tak robi strlcpy, w zasadzie to działa w ogóle podobnie)

0

dobra to już wiem jak. A czemu tutaj w ostatniej linijce jest błąd ?:

   struct Nazwa{
        char imie[80];
        int wiek;
    };
struct nazwa *wskaznik;

struct Nazwa Tomek;
strcpy(Tomek.imie,"aaaa");
wskaznik = &Tomek;
wskaznik->wiek = 10; 
0
struct nazwa *wskaznik;

Nazwa, nie nazwa

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