2012-08-02 98 views
18

Trong một cuộc phỏng vấn tôi đã hỏiLàm cách nào để in dấu ngoặc kép trong C?

In một dấu ngoặc kép bằng cách sử dụng chức năng printf()

tôi đã bị choáng ngợp. Ngay cả trong văn phòng của họ có một máy tính và họ nói với tôi để thử nó. Tôi đã thử cách này:

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

nhưng như tôi nghi ngờ nó không biên dịch. Khi trình biên dịch nhận được " đầu tiên, nó cho rằng đó là kết thúc của chuỗi, không phải là. Vậy làm thế nào tôi có thể đạt được điều này?

+12

Hãy nhớ phần ngắn về ký tự thoát ở đầu cuốn sách đó ...? – chris

+0

Bản sao có thể có của [Cách in các ký tự đặc biệt một cách rõ ràng trong C?] (Http://stackoverflow.com/questions/29477345/how-to-print-special-characters-explicitly-in-c) –

Trả lời

22

Hãy thử điều này:

#include <stdio.h> 

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

Bạn phải thoát khỏi quotationmark:

printf("\""); 
4

Bạn phải sử dụng thoát ký tự. Đó là một giải pháp của vấn đề gà và trứng này: làm thế nào để viết một chữ ", nếu tôi cần nó để chấm dứt một chuỗi chữ? Vì vậy, những người sáng tạo C đã quyết định sử dụng một ký tự đặc biệt thay đổi điều trị của char tiếp theo:

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

Ngoài ra bạn có thể sử dụng '\' để nhập ký tự đặc biệt như "\ n", "\ t", "\ a", nhập vào '\' bản thân: "\\" và vân vân

7
.

Bên cạnh đó thoát khỏi nhân vật, bạn cũng có thể sử dụng định dạng %c, và sử dụng các ký tự chữ cho một dấu ngoặc kép.

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

Cách rất hay của in các hằng số ký tự. – Angus

16

Không có dấu gạch chéo ngược, các ký tự đặc biệt có ý nghĩa đặc biệt tự nhiên. Với dấu gạch chéo ngược mà chúng in ra khi chúng xuất hiện.

\ - 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 

Tuyên bố

printf(" \" "); 

sẽ in cho bạn những dấu ngoặc kép. Bạn cũng có thể in các ký tự đặc biệt này \ a, \ b, \ f, \ n, \ r, \ t và \ v bằng dấu gạch chéo (trước).

+0

'\%' là sai - nó sẽ được xử lý giống như '%'. '\ '' là không cần thiết - bạn có thể đặt một dấu ngoặc kép trong dấu nháy kép giống như thế. – ugoren

+1

Tốt bắt.Bạn không thể in% trong dấu ngoặc kép. Nhưng bạn có thể in dấu phần trăm bằng %%. Giống như printf ("%%"); – Angus

+1

Bạn cũng có thể sử dụng '"% "' tự do nếu nó không nằm trong chuỗi định dạng (ví dụ 'printf (" in một int bằng% s \ n ","% d ")') – ugoren

1

Cái này cũng làm việc:

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

Nhưng nếu bạn có kế hoạch để sử dụng nó trong một cuộc phỏng vấn, hãy chắc chắn bạn có thể giải thích những gì nó làm.

EDIT: Sau comment Eric Postpischil của, đây là một phiên bản mà không dựa vào ASCII:

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

Đầu ra là không phải là tốt đẹp, và nó vẫn không phải là 100% xách tay (sẽ phá vỡ một số chương trình mã hóa giả thuyết), nhưng nó sẽ hoạt động trên EBCDIC.

+0

Điều này là sai.Các printf bên trong sẽ được thực thi đầu tiên.Sau đó printf bên ngoài sẽ được thực hiện.Ngoài ra printf lồng nhau được sử dụng để tìm tổng số ký tự được in trong giao diện điều khiển. – Angus

+1

Đây không phải là sai, chỉ cần một chút xoắn, và nó hoạt động rất tốt. Thử nó. Như bạn nói, printf bên trong được thực hiện đầu tiên, bên ngoài - có gì sai với nó? – ugoren

+0

Nó sẽ in giá trị ascii của số (không có ký tự được in) được xuất ra từ printf bên trong. – Angus

7

Trong ngôn ngữ lập trình C, \ được sử dụng để in một số ký tự đặc biệt có ý nghĩa sepcial trong C.Những ký tự đặc biệt được liệt kê dưới đây

\\ - 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; 
} 

Output: "

-1

bạn nên sử dụng như: printf (" \ "");

Các vấn đề liên quan