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:
char bufor[20];
bufor[3] = '!';
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:
char bufor[20];
bufor[3] = '!';
Co znaczy nie działa? Na jakiej podstawie to stwierdzasz? Zawsze możesz sprawdzić: printf("%c",bufor[3]);
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.
@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 char
em. 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
.
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?
@Althorion: Jest więc jakiś sposob zeby zmienić ten znak na liczbę i zapisać to w przedstawiony sposob tzn. bufor[ bufor [2] ] = '!'
?
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
#include <string.h>
char bufor[4]={"abc"};
strcpy(&bufor[2],"!");
printf("%c",bufor[2]);
:|
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…
infinityhost napisał(a):
#include <string.h> char bufor[4]={"abc"}; strcpy(&bufor[2],"!"); printf("%c",bufor[2]);
:|
https://wandbox.org/permlink/dxg0ifDuDQRcMB1s
W czym problem?
infinityhost napisał(a):
#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