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

[C++] Zapisywanie zdań do tablicy char-ów

Ostatnio zmodyfikowano 2013-07-09 13:26
Autor Wiadomość
Vister26
Temat założony przez niniejszego użytkownika
[C++] Zapisywanie zdań do tablicy char-ów
» 2013-07-07 20:37:22
Tak jak w temacie, chcę stworzyć funkcję w której argumentem będzie dane zdanie i kolejne jego znaki(litery oraz spacje) będą wpisywane do kolejnych elementów tablicy char-ów. Pozostałe elementy tablicy muszą zostać wyzerowane.

Przypisywanie do kolejnych elementów już zrobiłem ale nie mam pojęcia jak rozkładać zdanie na litery (niewiem też czy zdanie ma być stringiem czy czymś innym)

C/C++
for( int n = 0; n < 32; n++ )
{
   
    tablica[ n ] = litera_zdania;
   
}

litera_zdania to jedna litera zdania po rozłożeniu na znaki.
P-87217
domin568
» 2013-07-07 21:15:25
Po wykonaniu tego kodu możesz jedynie otrzymać ostatnią literę z tablicy znaków , możesz sobie stworzyć
char zdanie[ 32 ]
 oraz
for( int i = 0; i < sizeof( zdanie ); i++ )
 i potem
cout << zdanie[ i ];
 i możesz wypisywać zdanie . Jeżeli chcesz zapisać swoją tablice znaków to nie musisz wcale używać jakiejś dodatkowej zmiennej . Wystarczy zrobić to tak :
C/C++
char zdanie[ 32 ]

for( int i = 0; i < sizeof( zdanie ); i++ )
{
    cout << "Napisz litere ";
    cin >> zdanie[ i ]
}
Myślę że pomogłem :)
P-87223
unimator
» 2013-07-07 22:43:12
Najpierw:
http://www.cplusplus.com​/reference/cstring/memset/
żeby wyczyścić tablicę docelową.
Potem:
http://www.cplusplus.com​/reference/cstring/memcpy/
lub
http://www.cplusplus.com​/reference/cstring/strcpy/
do skopiowania jednego obszaru pamięci (tablicy źródłowej) do innego (tablicy docelowej).

Jakbyś chciał samemu napisać takie funkcję to również nie widzę problemu. Bufor docelowy czyścisz pętlą np. for, a potem tą samą lub inną kopiujesz po kolei znaki.

Zdanie, czyli inaczej ciąg znaków, to tablica typu char.
P-87226
Vister26
Temat założony przez niniejszego użytkownika
» 2013-07-09 12:54:47
Dzięki wszystkim za odpowiedź, jednak trochę źle sprecyzowałem problem. Ja przypisuje swoje zdanie do tablicy tak:

C/C++
sendbuf[ 0 ] = 'o'; sendbuf[ 1 ] = 't'; sendbuf[ 2 ] = 'r'; sendbuf[ 3 ] = 'z';
sendbuf[ 4 ] = 'y'; sendbuf[ 5 ] = 'm'; sendbuf[ 6 ] = 'a'; sendbuf[ 7 ] = 'l';
sendbuf[ 8 ] = 'e'; sendbuf[ 9 ] = 'm'; sendbuf[ 10 ] = ' '; sendbuf[ 11 ] = 'm';
sendbuf[ 12 ] = 's'; sendbuf[ 13 ] = 'g';

Chciałem to zrobić w prostszy sposób(zajmujący mniej miejsca) np.

C/C++
char sendbuf[ 32 ] = "otrzymalem msg.";

Jednak to działa tylko przy definiowaniu tablicy. Jest może coś co pozwoli przypisać zdanie w ten sposób w dalszej części programu?
P-87304
Bimbol
» 2013-07-09 13:15:59
Nie wiem czy o to Ci chodzi:
C/C++
#include <iostream>
#include <string>

using namespace std;

int main()
{
    cout << "Podaj string: " << endl;
    string strTekst;
    cin >> strTekst;
    for( int i = 0; i < strTekst.length(); ++i )
    {
        cout << strTekst[ i ] << endl;
        if( strTekst[ i ] == 'a' )
             cout << "Wypisales a" << endl;
       
    }
   
    return 0;
}

string to przecież tablica char'ów :)
P-87305
Vister26
Temat założony przez niniejszego użytkownika
» 2013-07-09 13:17:41
Dzięki! Dokładnie o to mi chodziło. Po prostu nie wiedziałem że w ten sposób można odczytać znaki ze stringa ;)
P-87306
pekfos
» 2013-07-09 13:20:14
Jednak to działa tylko przy definiowaniu tablicy. Jest może coś co pozwoli przypisać zdanie w ten sposób w dalszej części programu?
strcpy().
C/C++
strcpy( sendbuf, "Blabla" );
P-87307
Vister26
Temat założony przez niniejszego użytkownika
» 2013-07-09 13:26:19
@up Ten sposób jest chyba najlepszy i najszybszy. Jednak dziękuje wszystkim za pomoc :)
P-87308
« 1 »
  Strona 1 z 1