2012-08-02 96 views
18

En una entrevista me preguntaron¿Cómo puedo imprimir una comilla en C?

Imprimir un signo de comillas usando la función printf()

me sentí abrumado. Incluso en su oficina había una computadora y me dijeron que lo intentara. Intenté de esta manera:

void main() 
{ 
    printf("Printing quotation mark " "); 
} 

pero como sospechaba que no compila. Cuando el compilador obtiene el primer " cree que es el final de la cadena, que no lo es. Entonces, ¿cómo puedo lograr esto?

+12

¿Recuerdas la sección corta sobre los caracteres de escape al comienzo de ese libro ...? – chris

+0

Posible duplicado de [Cómo imprimir caracteres especiales explícitamente en C?] (Http://stackoverflow.com/questions/29477345/how-to-print-special-characters-explicitly-in-c) –

Respuesta

22

Prueba esto:

#include <stdio.h> 

int main() 
{ 
    printf("Printing quotation mark \" "); 
} 
14

tienes que escapar del quotationmark:

printf("\""); 
4

Usted tiene que usar escapar de caracteres. Es una solución a este problema de huevo y gallina: ¿cómo escribo un ", si lo necesito para terminar una cadena literal? Entonces, los creadores C decidieron usar un carácter especial que cambia el tratamiento del siguiente carácter:

printf("this is a \"quoted string\""); 

también se puede usar '\' para introducir símbolos especiales como "\ n" "\ t", "\ a", a la entrada '\' en sí: "\\" y así sucesivamente

7
. además

evadir el carácter, también se puede utilizar el formato %c, y utilizar el carácter literal para una comilla.

printf("And I quote, %cThis is a quote.%c\n", '"', '"'); 
+0

Su muy buena forma de imprimiendo las constantes de los caracteres. – Angus

16

Sin una barra diagonal inversa, los caracteres especiales tienen un significado natural especial. Con una barra invertida, se imprimen tal como aparecen.

\ - escape the next character 
" - start or end of string 
’ - start or end a character constant 
% - start a format specification 
\\ - print a backslash 
\" - print a double quote 
\’ - print a single quote 
%% - print a percent sign 

La declaración

printf(" \" "); 

que imprimirá las comillas. También puede imprimir estos caracteres especiales \ a, \ b, \ f, \ n, \ r, \ t y \ v con una (barra inclinada) anterior.

+0

'\%' está mal - se tratará igual que '%'. '\ '' no es necesario. Puedes poner una comilla entre comillas dobles así. – ugoren

+1

Buena captura. Pero no puede imprimir% entre comillas dobles. Pero puedes imprimir un signo de percentil usando %%. Como printf ("%%"); – Angus

+1

También puede usar '"% "' libremente si no está en la cadena de formato (por ejemplo, 'printf (" imprimir un int usando% s \ n ","% d ")') – ugoren

1

Este también funciona:

printf("%c\n", printf("Here, I print some double quotes: ")); 

Pero si va a usarlo en una entrevista, asegúrese de que puede explicar lo que hace.

EDITAR: Siguiendo el comentario de Eric Postpischil, aquí está una versión que no se basa en ASCII:

printf("%c\n", printf("%*s", '"', "Printing quotes: ")); 

La salida no es tan bonito, y todavía no es 100% portátil (voluntad romper algunos esquemas de codificación hipotética), pero debería funcionar en EBCDIC.

+0

Esto es incorrecto. El printf interno se ejecutará primero. Luego se ejecutará la impresión externa. Las printf anidadas normalmente se utilizan para encontrar el número total de caracteres impresos en la consola. – Angus

+1

Esto no está mal, solo un poco retorcido, y funciona muy bien. Intentalo. Como dices, el printf interno se ejecuta primero, el exterior: ¿qué ocurre? – ugoren

+0

Imprimirá el valor ascii del número (número de caracteres impresos) emitido desde la impresión interna. – Angus

7

En el lenguaje de programación C, \ se utiliza para imprimir algunos de los caracteres especiales que tienen significado sepcial en C.Esos caracteres especiales se enumeran a continuación

\\ - Backslash 
\' - Single Quotation Mark 
\" - Double Quatation Mark 
\n - New line 
\r - Carriage Return 
\t - Horizontal Tab 
\b - Backspace 
\f - Formfeed 
\a - Bell(beep) sound 
0
#include<stdio.h> 
int main(){ 
char ch='"'; 
printf("%c",ch); 
return 0; 
} 

salida: "

-1

se debe utilizar como: printf (" \ "");

Cuestiones relacionadas