2013-04-21 14 views
10

Sto lavorando con Arduino.Come inviare ctrl + z in C

Voglio inviare Ctrl +z dopo una serie in C. Ho provato troncando ^Z ma che non ha funzionato. Quindi come farlo?

+1

char ctrlz = 0x1A; – yeyo

+1

http://en.wikipedia.org/wiki/ASCII#ASCII_control_code_chart per ulteriori riferimenti. – TNW

+0

* nix, 'man ascii' – yeyo

risposta

12

Ctrl + Z = 26 = '\032' = '\x1A'. Una delle sequenze di escape backslash può essere scritta in una stringa letterale (ma attenzione con la fuga esadecimale come se fosse seguita da una cifra o da AF o af, che verrà conteggiata come parte della fuga esadecimale, che non è ciò che tu vuoi).

Tuttavia, se si simula l'ingresso del terminale su una macchina Windows (quindi si desidera che il carattere sia trattato come un'indicazione EOF), è necessario ripensarci. Non è così che funziona.

Può o non può fare quello che vuoi con Arduino, sia; in parte, dipende da cosa pensi che farà. Dipende anche dal fatto che la stringa di input verrà trattata come se provenisse da un terminale.

1

Suppongo che "troncando" in realtà intendessi aggiungere.

in ASCII, CTRL + z è il punto di codice 26 in modo da poter semplicemente accodare che come personaggio, qualcosa come:

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

Il metodo sprintf è solo uno dei modi di facendo tutto questo, fondamentalmente dipendono da voi mettendo un singolo byte alla fine con il valore 26.

+1

come semplicemente usare la sequenza di escape \ xFF dove FF sono due cifre esadecimali per il codice. quindi: "Questo è il mio messaggio \ x1A" – matt

3

ho inciso questo come avevo bisogno di simili

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

Speranza che aiuta 8)

Problemi correlati