Ý nghĩa của các ký tự điều khiển sau là gì:
Vận chuyển trở lại
Nguồn cấp dữ liệu
Thức ăn dạng
Ý nghĩa của các ký tự điều khiển sau là gì:
Vận chuyển trở lại
Nguồn cấp dữ liệu
Thức ăn dạng
Câu trả lời:
Vận chuyển trở lại có nghĩa là trở về đầu của dòng hiện tại mà không tiến xuống. Tên đến từ cỗ máy của máy in, vì màn hình rất hiếm khi tên được đặt. Điều này thường được thoát như \r
là CR viết tắt và có giá trị ASCII 13
hoặc 0x0D
.
Linefeed có nghĩa là tiến xuống dòng tiếp theo; tuy nhiên, nó đã được tái sử dụng và đổi tên. Được sử dụng như "dòng mới", nó chấm dứt các dòng (thường bị nhầm lẫn với các dòng tách biệt ). Điều này thường được thoát như \n
, viết tắt là LF hoặc NL và có giá trị ASCII 10
hoặc 0x0A
. CRLF (nhưng không phải CRNL) được sử dụng cho cặp \r\n
.
Nguồn cấp dữ liệu mẫu có nghĩa là tiến xuống "trang" tiếp theo. Nó thường được sử dụng làm trình phân tách trang, nhưng bây giờ cũng được sử dụng làm trình phân tách phần. (Nó được sử dụng không phổ biến trong mã nguồn để phân chia các hàm hoặc nhóm chức năng độc lập logic.) Trình chỉnh sửa văn bản có thể sử dụng ký tự này khi bạn "chèn ngắt trang". Điều này thường được thoát như \f
, viết tắt FF và có giá trị ASCII 12
hoặc 0x0C
.
Là nhân vật điều khiển, chúng có thể được diễn giải theo nhiều cách khác nhau.
Sự khác biệt phổ biến nhất (và có lẽ là điều duy nhất đáng lo ngại) là các dòng kết thúc bằng CRLF trên Windows, NL trên Unix và CR trên Mac cũ (tình hình đã thay đổi với OS X giống như Unix). Lưu ý sự thay đổi về ý nghĩa từ LF sang NL, đối với cùng một ký tự, mang lại sự khác biệt giữa Windows và Unix. (Tất nhiên, Windows mới hơn Unix, vì vậy nó không áp dụng sự thay đổi ngữ nghĩa này. Tôi không biết lịch sử của máy Mac bằng CR.) Nhiều trình soạn thảo văn bản có thể đọc các tệp ở bất kỳ định dạng nào trong ba định dạng này và chuyển đổi giữa chúng. , nhưng không phải tất cả các tiện ích có thể.
Nguồn cấp dữ liệu biểu mẫu thú vị hơn một chút (mặc dù ít được sử dụng trực tiếp hơn) và với định nghĩa thông thường của trình phân tách trang, nó chỉ có thể nằm giữa các dòng (ví dụ: sau chuỗi dòng mới của NL, CRLF hoặc CR) hoặc khi bắt đầu hoặc cuối tập tin.
\x0c
?
\r
là vận chuyển trở lại và di chuyển con trỏ trở lại như thể tôi sẽ làm-
printf("stackoverflow\rnine")
ninekoverflow
có nghĩa là nó đã dịch chuyển con trỏ đến đầu "stackoverflow" và ghi đè lên bốn ký tự bắt đầu vì "chín" dài bốn ký tự.
\n
là ký tự dòng mới thay đổi dòng và đưa con trỏ đến đầu dòng mới như-
printf("stackoverflow\nnine")
stackoverflow
nine
\f
là dạng thức ăn, việc sử dụng của nó đã trở nên lỗi thời nhưng nó được sử dụng để tạo ra vết lõm như
printf("stackoverflow\fnine")
stackoverflow
nine
nếu tôi sẽ viết như-
printf("stackoverflow\fnine\fgreat")
stackoverflow
nine
great
printf
tiện ích từ coreutils. Hoặc thậm chí sử dụng echo -en
đó là một bash dựng sẵn.
\f
là thực sự \v
- một tab dọc, được cho là cả hai trông giống nhau trong bảng điều khiển.
printf("123\f456\f789");
hiển thị /> <bold> 123456789 </ bold> trên bảng điều khiển.
Hãy xem Wikipedia :
Các hệ thống dựa trên ASCII hoặc một bộ ký tự tương thích sử dụng riêng lẻ (Nguồn cấp dữ liệu, '\ n', 0x0A, 10 theo số thập phân) hoặc CR (Trả về vận chuyển, '\ r', 0x0D, 13 theo số thập phân) hoặc CR theo sau LF (CR + LF, 0x0D 0x0A). Các ký tự này dựa trên các lệnh của máy in: Nguồn cấp dữ liệu chỉ ra rằng một dòng giấy sẽ được nạp ra khỏi máy in và việc trả lại vận chuyển chỉ ra rằng việc vận chuyển máy in sẽ trở về đầu dòng hiện tại.
\f
được sử dụng để ngắt trang. Bạn không thể thấy bất kỳ hiệu ứng trong giao diện điều khiển. Nhưng khi bạn sử dụng hằng ký tự này trong tệp của mình thì bạn có thể thấy sự khác biệt.
Ví dụ khác là nếu bạn có thể chuyển hướng đầu ra của mình sang một tệp thì bạn không phải viết tệp hoặc sử dụng xử lý tệp.
Ví dụ:
Viết mã này trong c ++
void main()
{
clrscr();
cout<<"helloooooo" ;
cout<<"\f";
cout<<"hiiiii" ;
}
và khi bạn biên dịch nó sẽ tạo ra một exe (ví dụ như ex. abc.exe
)
sau đó bạn có thể chuyển hướng đầu ra của bạn đến một tệp bằng cách này:
abc > xyz.doc
sau đó mở tệp xyz.doc
bạn có thể thấy ngắt trang thực tế giữa hellooo và hiiii ....
Ngoài những thông tin trên, vẫn còn một lịch sử thú vị về LF (\ n) và CR (\ r). [Tác giả gốc: Nguồn: http://www.ruanyifeng.com/blog/2006/04/post_213.html] Trước khi máy tính xuất hiện, có một loại teleprinter gọi là Teletype Model 33. Nó có thể in mỗi ký tự 10 ký tự thứ hai. Nhưng có một vấn đề với điều này, sau khi in xong mỗi dòng, sẽ mất 0,2 giây để chuyển sang dòng tiếp theo, đó là thời gian in 2 ký tự. Nếu một nhân vật mới được chuyển trong 0,2 giây này, thì nhân vật mới này sẽ bị mất.
Vì vậy, các nhà khoa học đã tìm ra cách giải quyết vấn đề này, họ thêm hai ký tự kết thúc sau mỗi dòng, một là 'Vận chuyển trở lại', nghĩa là bảo máy in đưa đầu in sang trái.; một cái khác là 'Line feed', nó báo cho máy in di chuyển giấy lên 1 dòng.
Sau này, máy tính trở nên phổ biến, hai khái niệm này được sử dụng trên máy tính. Vào thời điểm đó, thiết bị lưu trữ rất đắt tiền, vì vậy một số nhà khoa học cho rằng rất tốn kém khi thêm hai ký tự ở cuối mỗi dòng, một là đủ, vì vậy có một số tranh luận về việc nên sử dụng cái nào.
Trong UNIX / Mac và Linux, '\ n' được đặt ở cuối mỗi dòng, trong Windows, '\ r \ n' được đặt ở cuối mỗi dòng. Hậu quả của việc sử dụng này là các tệp trong UNIX / Mac sẽ được hiển thị trong một dòng nếu được mở trong Windows. Trong khi tệp trong Windows sẽ có một ^ M ở cuối mỗi dòng nếu được mở trong UNIX hoặc Mac.
WRITE.EXE
(còn gọi là Wordpad) có thể hiển thị chúng tốt.
Trên các thiết bị đầu cuối máy in giấy cũ, tiến tới dòng tiếp theo bao gồm hai hành động: di chuyển đầu in trở lại đầu phạm vi quét ngang (quay trở lại vận chuyển) và tiến lên cuộn giấy được in trên (nạp giấy).
Vì chúng tôi không còn sử dụng thiết bị đầu cuối máy in giấy nữa, những hành động đó không thực sự phù hợp nữa, nhưng các ký tự được sử dụng để báo hiệu chúng đã bị mắc kẹt trong các hóa thân khác nhau.
Hãy xem xét một máy in tác động IBM 1403. CR di chuyển đầu in đến đầu dòng, nhưng KHÔNG tiến hành giấy. Điều này cho phép "in đè", đặt nhiều dòng đầu ra trên một dòng. Những thứ như gạch chân đã đạt được theo cách này, cũng như in BÓNG. LF nâng cao giấy một dòng. Nếu không có CR, dòng tiếp theo sẽ in dưới dạng bước so le vì LF không di chuyển đầu in. FF nâng giấy sang trang tiếp theo. Nó cũng thường di chuyển đầu in đến đầu dòng đầu tiên trên trang mới, nhưng bạn có thể cần CR cho điều đó. Để chắc chắn, hầu hết các lập trình viên đã mã hóa CRFF thay vì CRLF ở cuối dòng cuối cùng trên một trang vì CR thêm do FF tạo ra sẽ không thành vấn đề.
Nói ngắn gọn :
Carriage_return ( \r
hoặc 0xD
): Để nắm quyền kiểm soát tại bắt đầu của cùng một dòng .
Line_Feed ( \n
hoặc 0xA
): Để Mất quyền kiểm soát tại bắt đầu của dòng tiếp theo .
form_feed ( \f
hoặc 0xC
): Để nắm quyền kiểm soát tại bắt đầu của trang tiếp theo .
Như một bổ sung,
1, Vận chuyển trở lại : Đó là một thuật ngữ máy in có nghĩa là thay đổi vị trí in thành đầu dòng hiện tại . Trong thế giới máy tính, nó có nghĩa là quay trở lại điểm bắt đầu của dòng hiện tại trong hầu hết các trường hợp nhưng hiếm khi là viết tắt của dòng mới.
2, Nguồn cấp dữ liệu : Đó là một thuật ngữ máy in có nghĩa là nâng cấp một dòng giấy. Vì vậy, Vận chuyển trở lại và Nguồn cấp dữ liệu được sử dụng cùng nhau để bắt đầu in khi bắt đầu một dòng mới. Trong thế giới máy tính, nó thường có cùng ý nghĩa với dòng mới.
3, Form feed : Đó là một thuật ngữ máy in, tôi thích lời giải thích trong chủ đề này .
Nếu bạn đang lập trình cho một máy in kiểu thập niên 1980, nó sẽ đẩy giấy ra và bắt đầu một trang mới. Bạn gần như chắc chắn không bao giờ cần nó.
Nó gần như lỗi thời và bạn có thể tham khảo Escape Sequ \ f - form feed - chính xác thì nó là gì? để giải thích chi tiết.
Lưu ý, chúng ta có thể sử dụng CR hoặc LF hoặc CRLF để đại diện cho dòng mới trong một số nền tảng nhưng dòng mới không thể đứng bên cạnh họ trong một số nền tảng khác. Tham khảo wiki Newline để biết chi tiết.
LF: Các hệ thống giống như Multics, Unix và Unix (Linux, OS X, FreeBSD, AIX, Xenix, v.v.), BeOS, Amiga, RISC OS, và các hệ thống khác
CR: Máy 8 bit hàng hóa, Acorn BBC, ZX Spectrum, TRS-80, gia đình Apple II, Oberon, hệ điều hành Mac cổ điển cho đến phiên bản 9, MIT Lisp Machine và OS-9
RS: Triển khai QNX trước POSIX
0x9B: Máy 8 bit Atari sử dụng biến thể ATASCII của ASCII (155 ở dạng thập phân)
CR + LF: Microsoft Windows, DOS (MS-DOS, PC DOS, v.v.), DEC TOPS-10, RT-11, CP / M, MP / M, Atari Tosh, OS / 2, Symbian OS, Palm OS, CPC Amstrad và hầu hết các HĐH không phải Unix và không phải IBM khác
LF + CR: Acorn BBC và RISC OS xuất ra văn bản.
Quay trở lại vận chuyển và nguồn cấp dữ liệu cũng là tài liệu tham khảo cho máy đánh chữ, trong đó với một cú ấn nhỏ vào tay cầm ở phía bên trái của vận chuyển (nơi giấy đi), giấy sẽ xoay một lượng nhỏ xung quanh xi lanh, tiến lên tài liệu một dòng. Nếu bạn đã gõ xong một dòng và muốn tiếp tục tiếp theo, bạn đã đẩy mạnh hơn, cả hai tiến lên một dòng và trượt cỗ xe sang bên phải, sau đó tiếp tục gõ từ trái sang phải một lần nữa khi cỗ xe di chuyển với mỗi lần gõ phím . Không cần phải nói, word-quấn là cài đặt mặc định cho tất cả xử lý văn bản của thời đại. P: D
Đó là những ký tự không in, liên quan đến khái niệm "dòng mới". \ n là nguồn cấp dữ liệu. \ r là vận chuyển trở lại. Trên các nền tảng khác nhau, chúng có ý nghĩa khác nhau, liên quan đến một dòng mới hợp lệ. Trong các cửa sổ, một dòng mới là \ r \ n. Trong linux, \ n. Trong mac, \ r.
Trong thực tế, bạn đặt chúng vào bất kỳ chuỗi nào và nó sẽ có hiệu lực khi in ra khỏi chuỗi.