Wpis z mikrobloga

Pewnie noob question, ale nie mogę znaleźć odpowiedzi.
Mam taki kawałek kodu:

while(name[i] != '\0')
m_name[i] = name[i++];
Chciałem zrobić inkrementację w ten sposób (i to int zainicjalizowany przed pętlą zerem), ale wpisuje mi w m name jakieś śmieci oprócz prawidłowych danych. Czego tu nie rozumiem?
"name" to const char, załóżmy że "Miro", więc dla i = 0 warunek pętli jest spełniony, a więc m name[0] = name[0], zmienna i powiększona o 1.
#programowanie #jezykc #cpp #naukaprogramowania
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@nienawidzejanka: Tak się nie powinno pisać. Mieszanie inkrementacji w jednej linijce z odczytem jest proszeniem się o problemy. W Twoim przykładzie prawdopodobnie odczytuje name[0], ale wpisuje to już do m_name[1], bo w międzyczasie zinkrementowało i.
Lepiej napisz:

while (name[i] !=
  • Odpowiedz
@Saly: z tym że śmieć pojawia się przed wypisywaniem moich danych, jeden taki pytajniczek
@bambosze_babuni: name nie jest tablicą, jest to argument typu const char* przekazywany do funkcji
@glonstar: chyba jest tak jak mówisz, przypisuje do m_name[1]. Tą drugą wersję z inkremenacją po przypisaniu znam, tylko chciałem przetestować inkrementacje w indeksie, widziałem to kiedyś w książce o C od KR
  • Odpowiedz