OK. Mam polecenie:
Napisz funkcję, która wywoływana jest z dwoma argumentami. Pierwszy to wskaźnik do tablicy znaków, w które jest już jakiś C-string. Drugi to rozmiar tej tablicy. Funkcja ta ma do początku bieżącej treści tablicy znaków dopisać tekst „UWAGA: „ ,
Jeśli w rezultacie powstałby C-string dłuższy, niż na to pozwala obecny rozmiar tablicy znaków – niech trzy ostatnie możliwe znaki zostaną zastąpione trzema kropkami.
Jako rezultat swej pracy funkcja ta ma zwracać wskaźnik do tablicy znaków, na której dokonała zmiany.
Udało mi się napisać następujący kod:
#include <iostream>
using namespace std;
char* Sklejacz(char *wsk, const int rozmiar);
char uwaga[] = "UWAGA: ";
int main()
{
char Napis[10] = "mleko";
Sklejacz(Napis, 10);
//cout << Napis;
}
char* Sklejacz(char *wsk, const int rozmiar)
{
char schowek[100];
int licznik = 0;
for(; licznik < 7; licznik++)
{
schowek[licznik] = uwaga[licznik];
}
for(; ; licznik++)
{
if(!(schowek[licznik] = (*wsk++))) break;
}
for(int i = 0; schowek[i] != 0; i++) cout << i << endl;
cout << schowek; // Wydruk pomocniczy
return wsk;
}
Jak widać, gotowy już string mam w tablicy "schowek". Teraz pozostało tylko przekopiować go do tablicy, na którą pokazuje wskaźnik (z zastosowaniem do reguł podanych w poleceniu). Niby proste, ale kiedy próbuję to zrobić np. tak:
for(int i = 0; ; i++, *wsk++)
{
if(!(*wsk = schowek[i])) break;
}
To od razu dostaję w konsoli masę niezrozumiałych błędów. Próbowałem na wiele sposobów z podobnym rezultatem. Czy możecie mi powiedzieć jak mam to zrobić? Bo to chyba jest możliwe ;D ??