Zapisywanie danych do tablic znaków

Zapisywanie danych do tablic znaków
P6
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 21
0

Jak do utworzonej wcześniej tablicy char mogę później przypisać znak? Chodzi mi o uzyskanie czegoś takiego, ale ten sposób nie działa:

Kopiuj
char bufor[20];
bufor[3] = '!';
_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
2

Co znaczy nie działa? Na jakiej podstawie to stwierdzasz? Zawsze możesz sprawdzić: printf("%c",bufor[3]);

P6
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 21
0

jednak gdzie indziej był błąd, ten zapis faktycznie działa. chcę przypisać ten znak do indeksu którym jest liczba przypisana do innego indeksu. np. bufor[ bufor [2] ] = '!'; ten zapis nie działa.

Althorion
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1620
2

@Pysa6:
Odpowiadaj w odpowiedziach, nie w komentarzach.

. chcę przypisać ten znak do indeksu którym jest liczba przypisana do innego indeksu

Nie rozumiem tego zdania. Może dlatego, że jest już bardzo późno, ale mimo wszystko — spróbuj napisać to jaśniej.

bufor[ bufor [2] ] = '!'

Jako że bufor jest tablicą charów, to bufor[2] jest charem. Jak go zrzutujesz do size_t, żeby uzywać do adresowania tablicy, to może Ci wyskoczyć poza zakres i robić coś niespodziewanego. Np. jak w bufor[2] jest '7', to jego odpowiednikiem jest 55u.

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
4

Nie ma czegoś takiego jak „nie działa”. Podawaj zawsze co się dzieje: nie kompiluje się (jaki komunikat?), kompiluje ale wyrzuca wyjątek przy uruchomieniu, czy program funkcjonuje ale wynik działania jest nieprawidłowy?

P6
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 21
0

@Althorion: Jest więc jakiś sposob zeby zmienić ten znak na liczbę i zapisać to w przedstawiony sposob tzn. bufor[ bufor [2] ] = '!' ?

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
4
Kopiuj
bufor[2]=3;
bufor[ bufor [2] ] = '!';
printf("%c\n",bufor[3]);

Z tym że mi to wygląda na problem XY: https://en.wikipedia.org/wiki/XY_problem

IN
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 60
0
Kopiuj
#include <string.h>
char bufor[4]={"abc"};
strcpy(&bufor[2],"!");
printf("%c",bufor[2]);

:|

Althorion
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1620
0
Pysa6 napisał(a):

@Althorion: Jest więc jakiś sposob zeby zmienić ten znak na liczbę i zapisać to w przedstawiony sposob tzn. bufor[ bufor [2] ] = '!' ?

Tak. Konkretny sposób zależy, oczywiście, od tego, jaki to znak i jak chcesz go zamienić na liczbę. Jak masz cyfrę dziesiętną, którą chcesz zamienić na liczbę naturalną której jest reprezentacją — więc '0'0, '1'1, '7'7, itd. — to możesz po prostu odjąć '0' od tego znaku¹, o tak: bufor[bufor[2] - '0'].

Ale może faktycznie opisz lepiej co chcesz zrobić, a nie swoje problemy z rozwiązaniem, bo zaczyna to wyglądać karkołomnie.


¹ W standardowych warunkach — teoretycznie standard C++ nie definiuje, jak mają być zakodowane te znaki, ale nie kojarzę dosłownie żadnego kodowania, które by nie miało cyfr po kolei…

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0
infinityhost napisał(a):
Kopiuj
#include <string.h>
char bufor[4]={"abc"};
strcpy(&bufor[2],"!");
printf("%c",bufor[2]);

:|

https://wandbox.org/permlink/dxg0ifDuDQRcMB1s
W czym problem?

AK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3561
0
infinityhost napisał(a):
Kopiuj
#include <string.h>
char bufor[4]={"abc"};
strcpy(&bufor[2],"!");
printf("%c",bufor[2]);

:|

Kod nie spełnia załozeń, inaczej mówiac jest błędny.
Zapewnie dlatego tak go testujesz, aby nie widzieć problemu

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.