Pracuję z Arduino.Jak wysłać ctrl + z w C
Chcę wysłać Ctrl + Z po sznurku w C I próbował obcinania ^Z
ale to nie działa. Jak to zrobić?
Pracuję z Arduino.Jak wysłać ctrl + z w C
Chcę wysłać Ctrl + Z po sznurku w C I próbował obcinania ^Z
ale to nie działa. Jak to zrobić?
Ctrl + Z = 26 = '\032'
= '\x1A'
. Każda z sekwencji ułamkowych odwrotnych ukośników może być napisana literowo (ale ostrożnie z ucieczką heksadecymalną, tak jakby następowała cyfra lub AF lub af, która również będzie liczona jako część ucieczki heksadecymalnej, co nie jest chcesz).
Jednakże, jeśli symulujesz wejście terminala na komputerze z systemem Windows (aby znak był traktowany jako wskazanie EOF), musisz pomyśleć jeszcze raz. Tak nie działa.
Może, ale nie musi, robić to, co chcesz z Arduino; po części zależy to od tego, co myślisz, że to zrobi. Zależy to również od tego, czy ciąg wejściowy będzie traktowany tak, jakby pochodził z terminala.
Zakładam, że przez "obcinanie" faktycznie oznacza to dołączanie.
w ASCII, CTRL + oo jest punkt kod 26, więc można po prostu dołączyć, że jako postać, coś jak:
#define CTRL_Z 26
char buffer[100];
sprintf (buffer, "This is my message%c", CTRL_Z);
Sposób sprintf
jest tylko jeden ze sposobów Robiąc to, ale wszystkie w zasadzie zależą od tego, czy wstawisz pojedynczy bajt na końcu o wartości 26.
takich jak po prostu użycie sekwencji escape \ xFF, gdzie FF są dwiema cyframi szesnastkowymi, które są dla kodu. więc: "To jest moja wiadomość \ x1A" – matt
I hacked to jako ja potrzebowałem podobny
#include <stdio.h>
#define CTRL(x) (#x[0]-'a'+1)
int main (void)
{
printf("hello");
printf("%c", CTRL(n));
printf("%c", CTRL(z));
}
nadzieję, że pomoże 8)
char ctrlz = 0x1a; – yeyo
http://en.wikipedia.org/wiki/ASCII#ASCII_control_code_chart w celu uzyskania dalszych informacji. – TNW
* nix, 'man ascii' – yeyo