Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wskaźniki do tablic znaków- zadanie

Ostatnio zmodyfikowano 2013-06-30 15:08
Autor Wiadomość
abdi
» 2013-06-26 23:24:40
Czekaj... to chyba mogło by być tak?

char *& wsk = tekst;

teraz wsk i teks będą wskazywać na to samo.

Przy innych wersjach kodu musisz uważać bo np
wsk = "nowy tekst"
 powoduje ze wsk przyjmuje nowy adres i wskazuje na "nowy tekst".

Ale przy tym podanym przeze mnie się nie musisz martwić.
Napisz jednak czy działa bo przyznam się że kodu nie analizowałem dogłębnie i wnioskuje że o to ci chodzi z postu i z funkcji main.
P-86324
Matix8741
Temat założony przez niniejszego użytkownika
» 2013-06-27 08:22:58
Tak się chyba nie da bo błąd
C:\Users\V7\Documents\nauka cPP\uwaga.cpp|8|error: invalid initialization of non-const reference of type 'char*&' from a temporary of type 'char*'|
a wersja
*& wsk = tekst
 Tez nic nie daje. Pragnę zaznaczyć, że objekt
tekst
 jest tablica znaków czyli
char teskt[ 55 ]

EDIT:
Dobra mój bład wszystko z ustawianiem wskaźnika było dobrze, tylko go źle wyświetlałem ;( wystarczyła pętla for:
C/C++
for( int i = 0; i < rozmiar; i++, wsk++ )
     cout <<* wsk;
Ale nadal coś nie działa w funkcji
uwaga
Jeszcze wklejam kod źródłowy z komentarzami dla lepszej analizy:
C/C++
#include <iostream>
using namespace std;
char * uwaga( char *, int );
int main()
{
    const int rozmiar = 55; //rozmiar tablicy znaków
    char tekst[ rozmiar ] = { " za 3 sek nastapi autodestrukcja" }; //przypisanie tablicy znaków tekst
    char * wsk = tekst; //ustawnienie wskaźnika
    wsk = uwaga( wsk, rozmiar );
    for( int i = 0; i < rozmiar; i++, wsk++ )
         cout <<* wsk;
   
    return 0;
}
char * uwaga( char * zmieniacz, int ile )
{
    char * przechowywacz = new char[ ile ], uwaga[] = { "UWAGA:" }; //definicjie wkażnika potrzebnego do skopiowania
    int g = 0; //tego co ma zmieniacz
    while( * zmieniacz != 0 )
    {
        *( przechowywacz++ ) =*( zmieniacz++ ); //wlasnie te kopiowanie
        g++;
    }
    zmieniacz -= g; //reset wkazników
    przechowywacz -= g;
    g = 0;
    int i = 0;
    for(; i < 6; i++, zmieniacz++, g++ )
    {
        * zmieniacz = uwaga[ i ]; //wpisywanie słowa "UWAGA:"
    }
    while( * zmieniacz != 0 )
    {
        zmieniacz++; //"jechanie' do konca C-stringu
        i++;
        g++;
    }
    int czy = 0;
    while( i < ile )
    {
        if( * zmieniacz == 0 ) //sprawdzanie czy jest miejsce na ten tekst "UWAGA:"
             czy++;
       
        i++;
        g++;
    }
    zmieniacz -= g + 7; //znów reset, ale do miejsca za "UWAGA:"
    g = 0;
    while( * przechowywacz != 0 )
    {
        *( zmieniacz++ ) =*( przechowywacz++ ); //wklejanie tekstu wczesniej skopiowanego
        g++;
    }
    if( czy >= 6 ) //jeśli nie bylo miejsca
    {
        zmieniacz -= 3;
        for( int i = 0; i < 3; zmieniacz++, i++ )
             * zmieniacz = '.'; //to stawiamy 3 kropki na koncu
       
    }
    zmieniacz -= g; //reset wkaźnika na początek
    return zmieniacz;
}
P-86329
Matix8741
Temat założony przez niniejszego użytkownika
» 2013-06-30 14:13:02
Mam rozumieć, że albo nikomu się nie chciało czytać kodu, albo nikt nie widzi błędu ? Naprawdę na was liczę ;)
P-86611
pekfos
» 2013-06-30 14:26:58
Ale nadal coś nie działa
No i nic dziwnego, że nikomu nie chciało się pisać odpowiedzi. "Macie kod, coś nie działa. Liczę na was.."
P-86614
Matix8741
Temat założony przez niniejszego użytkownika
» 2013-06-30 14:35:20
Dobra masz rację, ale ja nie mam pojęcia o co chodzi, po uruchomieniu programu system Windows wysyła powiadomienie "Program uwaga.exe przestał działać". Pewnie chodzi o złe użycie wskaźnika w jakimś miejscu i to na pewno jest w funkcji
char * uwaga( char *, int )
. Ja błędu nie znajduje...
EDIT: znalazłem fragment kodu z błędem 
C/C++
while( i < ile )
{
    if( * zmieniacz == 0 ) //sprawdzanie czy jest miejsce na ten tekst "UWAGA:"
         czy++;
   
    i++;
    g++;
}
zmieniacz -= g + 7; //znów reset, ale do miejsca za "UWAGA:"
[ / cpp ]

teraz kto ś wie o co chodzi ?
P-86615
abdi
» 2013-06-30 14:39:18
czasami dobrym rozwiązaniem jest napisanie czegoś od zera :)
a poza tym kto teraz operuje na c-stringach.?
to raczej taka sztuka dla sztuki.
P-86616
Matix8741
Temat założony przez niniejszego użytkownika
» 2013-06-30 14:41:38
Robię ćwiczenia z "Symfonii c++"
P-86617
pekfos
» 2013-06-30 15:04:44
Nie możesz użyć funkcji z biblioteki standardowej?

poza tym kto teraz operuje na c-stringach
Każdy programujący w C/C++?
P-86620
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona