Wpisywanie słowa z ascii do tablicy

0

Chciałbym zrobic program pokazujący wszystkie możliwości zapisu 3 literowego wyrazu ze znaków ascii czyli np

abd
a"null"q
b:y

itd.

Pętla bedzie się składała z cyfr, które nastepnie bedą podnoszone o 1 (po kolei każda-każdy wariant) konwertowane na ascii ,przypisywane do zmiennej i wypisywane jako słowa (zbiory liter)

Niestety utknąłem, tam gdzie np. a=62 b=44 c=82 chciałbym to przekonwertować na znaki z ascii ,oddzielnie kazdy, a następnie te 3 znaki ascii połączyć w jedno słowo.
Utknąłem na konwersji tym spoobem:

int a=69,b=81,c=55;

static_cast<char>(a);
static_cast<char>(b);
static_cast<char>(c);

i nie moge tego połączyć tak aby 3 zmienne (abc) zamienione na znaki ascii były razem wpisane do jednego miejsca w tablicy

0
 char tab[] = { 12, 23, 34 }; 

Nie musisz jawnie rzutować z int do char. Kompilator sam to zrobi. Dawno nie bawiłem się programowaniem C++ ale wydaje mi sie ze to co napisalem powinno dzialac. Jesli nie, mozesz zrobic tablice int, która za pomoca wskaźnika rzutujesz na char:

int tab[] = { 12, 23, 34 };
char* wsk = (char*)tab; 
0

Dzieki, to by działało, gdyby nie to że ja musze podnosić zapis znaku o 1 w góre, czyli musze zrobic działanie
zmienna++
a wtedy nie moge zmiennej wpisać jako
char tab[] = { 12, 23, 34 };
bo to bedzie wtedy zwykła litera,
Potrzebuje czegos co będzie działało w ten sposób
3 zmienne, każda ma wartość=1
pierwsza zmienna++
wszystkie 3 zmienne na ascii, przypisanie ich do argumentu,lub tablicy jako jedno słowo (tak żeby można było nastepnie coś tym słowem np.wyszukać, lub wkleić je do pliku txt)

Natomiast Twój drugi sposób nie działa, poniewaz mam "bezuzyteczny warunek wsk" ,nie zamienia wcale cyfr na litery i jest zapisane jako 3 oddzielne wartosci

1
int a = 60, b = 50, c = 70;
char tab[] = { ++a, --b, c++ };

Ciężko zrozumieć co masz myśli bez kodu. Najlepiej by było jakbyś wstawił to co masz, wtedy bym może zrozumiał co chcesz osiągnąć.

@Edit.
Można robić nawet tak:

char tab[3];
tab[0] = a;
tab[1] = b;
tab[2] = c;
0

Prawie dokładnie o to mi chodziło

#include <iostream>

using namespace std;

int main()
{
int a=56,b=49,c=81;
char tab[3];
tab[0] = a;
tab[1] = b;
tab[2] = c;

cout << tab[0] << endl;
cout << tab[1] << endl;
cout << tab[2] << endl;
}

Tylko że brakuje najważniejszego, chciałbym przypisać do jednej zmiennej, lub do jednego tylko miejsca w tablicy ciag znaków ,który wyświetli mi się po wpisaniu:
cout << tab[0] << tab[1] << tab[2] << endl;

Tak abym mógł tym ciągiem znaków(zmienną/tablicą z ciągiem) coś wyszukać
żeby nie szukało "d" "f" "h" tylko "dfh"

0

Yyyyyy.

 cout << tab << endl; 

Wyświetli wszystkie znaki z tablicy char.

0

I tak samo będzie ze wszelkimi operacjami na tej tablicy? bedzie te litery traktował jako całość?
Dzieki wielkie, pozostaje mi tylko usunac dodająca się na końcu wartość i bedę miał to czego chciałem, ze też sam nie wpadłem na coś tak prostego :)

0
int main()
  {
   char tab[]={56,49,81,0};
   cout<<tab<<endl;
   return 0;
  }
0

Nie moge dodać na koncu tablicy nulla, bo wtedy przy jakiejkolwiek operacji ta tablicą (np. chciałbym skopiować wszystkie pliki w folderze, a nie znam ich nazwy) dodany zostanie znak null, czyli np. nie uzna mi pliku tekst.txt, bo w tablicy bedzie tekst.txt(NULL)

0

Po pierwsze to nie NULL tylko '\0' - różnica bardzo istotna.
Po drugie właśnie bez '\0' nie uzna ci nazwy pliku.

0

Znak null na końcu każdego ciągu znaków informuje program o tym że ciąg się skończył - gdybyś usunął ten znak program kontynuowałby wypisywanie znaków wychodząc poza zakres danej tablicy (tzw. śmieci).
Poza tym nie rozumiem, dlaczego nie można nazwać znaku '\0' po prostu NULL??? NULL w C/C++ to zwykłe #define NULL 0, z tego wychodzi że NULL = 0 = '\0'.

1

Ten znak ASCII można nazwać NUL, owszem nawet w C skonwertuje ci się NULL na '\0'.
W C++ NULL został dla kompatybilności i sugeruje niezainicjalizowany wskaźnik.

1 użytkowników online, w tym zalogowanych: 0, gości: 1