Załadowanie liter do zmiennej char w strukturze.

2015-01-21 23:31
0

Dlaczego mi się to nie kompiluje ?

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

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

Pozostało 580 znaków

2015-01-22 00:04
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)


"(...) otherwise, the behavior is undefined".
edytowany 3x, ostatnio: Endrju, 2015-01-22 00:26

Pozostało 580 znaków

2015-01-22 00:08
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; 

Pozostało 580 znaków

2015-01-22 00:10
0
struct nazwa *wskaznik;

Nazwa, nie nazwa

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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