2016-01-20 19 views
5

Attualmente sto studiando C, se questa domanda sembra una facile o una novellistica, quindi sai perché. c sequenza di escape elencata nell'uomo ma sconosciuta in C

Leggendo la man page per printf ho trovato \ c elencato come una sequenza di fuga. La sua descrizione è

producono alcun altro messaggio

Non ho mai visto e sentito parlare di \ c prima di questo momento. Così ho deciso di provarlo in un semplice programma ciao mondo:

printf("\nHello World\n\n\c"); 

Di conseguenza, gcc mi dà questo avvertimento:

avvertimento: sconosciuto sequenza di escape: '\ c' [abilitata predefinito]

Questo suona un po 'strano per me, così sono andato attraverso essa ulteriormente indagare: sono andato a Wikipedia e \ c non è stato indicato come una via di fuga sequenza ... Quindi ho provato a cercare sul web, e qui su stack overflow. Ho trovato molto pochi riferimenti a \ c (in realtà due) come discusso in this topic e this one (credo che quest'ultimo non è in realtà legato alla C ma sembra che stiamo parlando "lo stesso \ c ", leggendo la descrizione fornita). Qualcuno potrebbe aiutarmi a capire questa cosa?

+0

non so di qualsiasi riferimento a lavorare come in 'serie C11'. puoi collegarti alla pagina man per favore? –

+0

@SouravGhosh http://linux.die.net/man/1/printf, è anche elencato quando digito man printf in un terminale. –

+0

non è la manpage 1 è per i comandi? Solo dicendo, non ho visto nulla sull'uomo 3 –

risposta

6

Sei non leggere la pagina man corretta. Quello che stai guardando è: man 1 printf, che riguarda il comando shell printf, non la funzione standard C printf.

Usa:

man 3 printf 

per leggere la funzione di libreria C. \c non è in C e quindi non è riconosciuto da printf(3).

Il printf(1) che stai guardando funziona come documentato.

$ /usr/bin/printf "ABC\chi" 

produce:

ABC 

Si noti che le pagine man di Linux, in generale, possono anche avere le estensioni non standard supplementari (specifici per Linux o glibc) e le estensioni POSIX ecc estensioni non standard di solito sono documentato come tale ma facile da perdere. Quindi se stai cercando quello che dice lo standard C, dovresti guardare allo standard C. Ecco uno online draft.

Se vi state chiedendo che cosa il numero di passato a man è, è la sezione di numero. 3 corrisponde alla funzione di libreria. Puoi trovare i dettagli con: man man. Ecco riassunto delle sezioni:

1 Executable programs or shell commands 
    2 System calls (functions provided by the kernel) 
    3 Library calls (functions within program libraries) 
    4 Special files (usually found in /dev) 
    5 File formats and conventions eg /etc/passwd 
    6 Games 
    7 Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7) 
    8 System administration commands (usually only for root) 
    9 Kernel routines [Non standard] 
+0

Ottimo riassunto! Dove l'hai preso? –

+1

@terencehill Intendi i numeri delle sezioni? Da "uomo uomo". –

+0

L'ho pensato, ma non c'è su OS X. Forse dovrei considerare di tornare a Linux ... –

Problemi correlati