web-dev-qa-db-fra.com

Comment envoyer ctrl + z en C

Je travaille avec Arduino.

Je veux envoyer Ctrl+z après une chaîne en C. J'ai essayé de tronquer ^Z mais cela n'a pas fonctionné. Alors, comment faire ça?

10
omerjerk

Ctrl+Z = 26 = '\032' = '\x1A'. Chacune des séquences d'échappement de barre oblique inverse peut être écrite dans un littéral de chaîne (mais soyez prudent avec l'échappement hexadécimal comme s'il était suivi d'un chiffre ou d'un caractère AF ou af, qui sera également compté comme partie de l'échappement hexadécimal, ce qui n'est pas le cas. tu veux).

Toutefois, si vous simulez une entrée de terminal sur une machine Windows (vous voulez donc que le caractère soit traité comme une indication EOF), vous devez réfléchir à nouveau. Ce n'est pas comme ça que ça marche.

Cela peut faire ou ne pas faire ce que vous voulez avec Arduino, non plus; cela dépend en partie de ce que vous pensez qu'il va faire. Cela dépend également de savoir si la chaîne en entrée sera traitée comme si elle provenait d'un terminal.

12
Jonathan Leffler

Je l'ai piraté car j'avais besoin de la même chose

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

espérons que cela aide 8)

3
Neil McGill

Je suppose que par "tronquer", vous vouliez réellement ajouter.

En ASCII, CTRL+z est le point de code 26 afin que vous puissiez simplement l’ajouter en tant que caractère, quelque chose comme:

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

La méthode sprintf n’est que n des façons de le faire, mais elles dépendent toutes essentiellement de la mise d’un octet à la fin avec la valeur 26.

1
paxdiablo