it-swarm.com.de

So senden Sie Strg + Z in C

Ich arbeite mit Arduino.

Ich will etwas senden Ctrl+z Nach einem String in C. Ich habe versucht, ^Z abzuschneiden, aber das hat nicht funktioniert. Also, wie geht das?

10
omerjerk

Ctrl+Z = 26 = '\032' = '\x1A'. Jede der Backslash-Escape-Sequenzen kann in einem String-Literal geschrieben werden (aber seien Sie vorsichtig, wenn dem Hex-Escape eine Ziffer oder AF oder af folgt, die ebenfalls als Teil des Hex-Escape gezählt werden, was nicht der Fall ist Sie wollen).

Wenn Sie jedoch die Terminaleingabe auf einem Windows-Computer simulieren (damit das Zeichen als EOF -Anzeige behandelt wird), müssen Sie erneut darüber nachdenken. So funktioniert das nicht.

Es kann mit Arduino auch tun oder nicht, was Sie wollen; Zum Teil hängt es davon ab, was Sie denken, dass es tun wird. Es hängt auch davon ab, ob die Eingabezeichenfolge so behandelt wird, als stamme sie von einem Terminal.

12

Ich habe das gehackt, als ich etwas Ähnliches brauchte

#include <stdio.h>
#define CTRL(x) (#x[0]-'a'+1)
int main (void)
{
    printf("hello");
    printf("%c", CTRL(n));
    printf("%c", CTRL(z));
}

hoffe es hilft 8)

3
Neil McGill

Ich gehe davon aus, dass Sie mit "Abschneiden" tatsächlich das Anhängen gemeint haben.

In ASCII CTRL+z Ist Code Punkt 26, so können Sie das einfach als Zeichen anhängen, so etwas wie:

#define CTRL_Z 26
char buffer[100];
sprintf (buffer, "This is my message%c", CTRL_Z);

Die sprintf-Methode ist nur eine der Möglichkeiten, dies zu tun, aber alle hängen im Grunde davon ab, dass Sie ein einzelnes Byte mit dem Wert 26 am Ende setzen.

1
paxdiablo