• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dopisywanie do tablicy. Prośba o opinię

Object Storage Arubacloud
0 głosów
166 wizyt
pytanie zadane 16 marca 2019 w C i C++ przez Mavannkas Bywalec (2,290 p.)

Robię właśnie zadanie z książki Symfonia C++ Pana Grębosza z rozdziału dotyczącego wskaźników. Chodzi w nim o to, że mam dopisać na początek tablicy tekst "UWAGA: " jeśli tablica będzie zbyt mała to na samym końcu dopisze "...". I tu prośba do was. Jak myślicie dobrze to zrobiłem? Co prawda działa ale wszyscy wiedzą, że ważniejsze jest przecież jak działa.

Napisałem taki kod.

#include <iostream>
using namespace std;
//===========================================================
char *Dopisek(char *a,int siz);
//===========================================================
int main()
{
   char T[50]="Ala ma kota :D";
   char *nT=Dopisek(T,50);
   cout<<T;
}
//===========================================================
char *Dopisek(char *a,int siz)
{
    char *T=new char[siz],Dop[]="UWAGA: ";
    char *p=Dop,*poczatek=T;
    int i=0;
    while(*a)
    {
        i++;
        if(i>=siz)
        {

            *(T-1)='.';
            *(T-2)='.';
            *(T-3)='.';
            break;
        }
        if(*p)
        {
           *T=*p;
           p++;
        }
        else
        {
            *T=*a++;
        }
        T++;
    }
    *(T)=0;
    /*
    a=(a-(i-7));
    T-=i;
    while(*(a++)=*(T++));
    delete [] poczatek;
    poczatek=0;
    */
    return poczatek;
}

Zakomendowany fragment to przypadek w którym chce zmienić tablice wejściową co według mnie jest zbędne skoro funkcja ma zwracać wskaźnik na początek stworzonej tablicy. 

Z góry bardzo dziękuję za odpowiedź i ew. sugestie od bardziej doświadczonych programistów (dlaczego te wskaźniki są takie trudneee :-( ).

PS.
Jestem gotowy na ew. krytykę :D

komentarz 16 marca 2019 przez Hiskiel Pasjonat (22,830 p.)
Kazali Ci używać arytmetyki wskaźników?
komentarz 17 marca 2019 przez Mavannkas Bywalec (2,290 p.)
Zadanie było z działu o wskaźnikach więc chyba tak.
komentarz 17 marca 2019 przez Hiskiel Pasjonat (22,830 p.)
To nic takiego, bo istnieje lukier składniowy.
komentarz 17 marca 2019 przez Mavannkas Bywalec (2,290 p.)
Jak to się odnosi do mojego kodu?
komentarz 17 marca 2019 przez j23 Mędrzec (194,920 p.)

Nieco uporządkowałem tę twoją funkcję:

char *Dopisek(const char *str, unsigned int size)
{
	const char *prefix = "UWAGA: ";
	const char *ellipsis = "...";
	char *dst = new char[size + strlen(prefix) + 1];
	char *base_ptr = dst;

	while((*dst = *prefix++)) { ++dst; }
	while(size-- > 0 && (*dst = *str)) { ++dst; ++str; }

	if(*str != 0) 
	{
		dst -= 3;
		while(*dst++ = *ellipsis++) { }
	}

	return base_ptr;
}

 

1 odpowiedź

0 głosów
odpowiedź 16 marca 2019 przez Fish Nowicjusz (160 p.)
Ja nie widzę błędu...

Podobne pytania

0 głosów
1 odpowiedź 309 wizyt
pytanie zadane 19 stycznia 2021 w C i C++ przez Mytwi Nowicjusz (160 p.)
0 głosów
1 odpowiedź 632 wizyt
pytanie zadane 20 stycznia 2020 w C i C++ przez layla Początkujący (260 p.)
0 głosów
2 odpowiedzi 524 wizyt
pytanie zadane 27 grudnia 2019 w C i C++ przez Sejdi Początkujący (460 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...