Zapisywanie danych do tablic znaków

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:

char bufor[20];
bufor[3] = '!';
2

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

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.

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.

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?

0

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

4
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

0
#include <string.h>
char bufor[4]={"abc"};
strcpy(&bufor[2],"!");
printf("%c",bufor[2]);

:|

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…

0
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?

0
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

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