Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno funkce pro smazání znaku v poli, a převod char do int bez použití funkce (C)

Musis posunut aj ten zakoncovaci znak ktory je na konci retazca. Je to nulovy bajt., da sa oznacit aj ako '\0'. P.S. Vsetko ostatne co je za nim je nepodstatne. tym char [20] si len vyhradis 20 bajtov pamate, ale na nic ine sa to cislo 20 nepuzije, je to len tvoje vyhradene miesto. String konci nulovym bajtom a teda dlzka stringu v C je vzdy "dynamicka" (od pointra az po prvy nulovy bajt).
napr.

char *p1, *p2;
p1 = p2 = nejakyretazec;
while(*p1=='0') p1++;  // hladanie prveho znaku ineho ako '0'
if(p1!=p2)
{
  while(*p1!='\0') // kopirujeme az po zakoncovaci znak
    *p2++ = *p1++;
  *p2 = '\0';      // a pridame zakoncovaci znak
}
Inac namiesto cyklu mozes pouzit aj fciu memmove, ktora je schopna spravne kopirovat aj bloky ktore sa prelinaju, ak mas znamu dlzku retazca a pri dlhych kopirovanych blokoch je efektivnejsia. Ale pri vypocte dlzky kopirovaneho bloku pamatat aj na ten zakoncovaci nulovy bajt, a na to ze ked pouzivas unicode stringy (tchar apod) tak je jeden znak 2 bajty, v tom pripade vzdy pouzivat vo vypocte dlzky bloku aj sizeof(tchar) apod.

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny