ความหมายของตัวควบคุมต่อไปนี้คืออะไร:
การคืนสินค้า
ฟีดบรรทัด
ฟีดรูปแบบ
ความหมายของตัวควบคุมต่อไปนี้คืออะไร:
การคืนสินค้า
ฟีดบรรทัด
ฟีดรูปแบบ
คำตอบ:
Carriage returnหมายถึงการกลับไปที่จุดเริ่มต้นของบรรทัดปัจจุบันโดยไม่ลดระดับลง ชื่อนั้นมาจากแคร่ตลับหมึกของเครื่องพิมพ์เนื่องจากจอภาพมีน้อยมากเมื่อชื่อประกาศเกียรติคุณ นี้จะหนีกันทั่วไปว่าเป็น\r
ย่อCRและมีค่า ASCII หรือ13
0x0D
Linefeedหมายถึงการเลื่อนลงไปยังบรรทัดถัดไป แม้กระนั้นมันได้รับการ repurposed และเปลี่ยนชื่อ ใช้เป็น "newline" มันจะยุติบรรทัด (โดยทั่วไปสับสนกับการแยกบรรทัด) นี้จะหนีกันทั่วไปว่าเป็น\n
ย่อLFหรือ NL และมีค่า ASCII หรือ10
CRLF ( แต่ไม่ CRNL) ใช้สำหรับทั้งคู่0x0A
\r\n
ฟีดของฟอร์มหมายถึงเลื่อนลงไปที่ "หน้า" ถัดไป มันถูกใช้โดยทั่วไปเป็นตัวคั่นหน้า แต่ตอนนี้ยังใช้เป็นตัวคั่นส่วน (มันถูกใช้อย่างผิดปกติในซอร์สโค้ดเพื่อแบ่งฟังก์ชั่นที่เป็นอิสระทางตรรกะหรือกลุ่มของฟังก์ชั่น) โปรแกรมแก้ไขข้อความสามารถใช้ตัวละครนี้เมื่อคุณ "แทรกตัวแบ่งหน้า" นี้จะหนีกันทั่วไปว่าเป็น\f
ย่อFFและมีค่า ASCII หรือ12
0x0C
ในฐานะตัวควบคุมอาจตีความได้หลายวิธี
ความแตกต่างที่พบบ่อยที่สุด (และน่าจะเป็นสิ่งเดียวที่ควรค่าแก่การกังวล) คือบรรทัดที่ลงท้ายด้วย CRLF บน Windows, NL บน Unix-like และ CR สำหรับ Mac รุ่นเก่า (สถานการณ์เปลี่ยนไปด้วย OS X เป็น Unix) สังเกตว่าการเปลี่ยนความหมายจาก LF เป็น NL สำหรับตัวอักษรเดียวกันนั้นให้ความแตกต่างระหว่าง Windows และ Unix (Windows เป็นของใหม่กว่า Unix ดังนั้นจึงไม่ได้ใช้การเปลี่ยนความหมายนี้ฉันไม่ทราบประวัติของ Mac ที่ใช้ CR) ตัวแก้ไขข้อความจำนวนมากสามารถอ่านไฟล์ในรูปแบบทั้งสามนี้และแปลงระหว่างพวกเขา แต่ไม่สามารถใช้ประโยชน์ได้ทั้งหมด
แบบฟอร์มฟีดค่อนข้างน่าสนใจ (แม้ว่าจะใช้น้อยกว่าโดยตรง) และด้วยคำจำกัดความตามปกติของตัวคั่นหน้ามันสามารถเกิดขึ้นได้ระหว่างบรรทัดเท่านั้น (เช่นหลังจากลำดับบรรทัดใหม่ของ NL, CRLF หรือ CR) หรือตอนเริ่มต้นหรือ จุดสิ้นสุดของไฟล์
\x0c
หรือ
\r
คือ carriage return และเลื่อนเคอร์เซอร์กลับมาถ้าฉันจะทำ
printf("stackoverflow\rnine")
ninekoverflow
หมายความว่ามันได้เลื่อนเคอร์เซอร์ไปที่จุดเริ่มต้นของ "stackoverflow" และเขียนทับอักขระสี่ตัวที่เริ่มต้นเนื่องจาก "เก้า" มีความยาวสี่อักขระ
\n
เป็นอักขระขึ้นบรรทัดใหม่ซึ่งเปลี่ยนบรรทัดและนำเคอร์เซอร์ไปที่จุดเริ่มต้นของบรรทัดใหม่เช่น -
printf("stackoverflow\nnine")
stackoverflow
nine
\f
เป็นรูปแบบฟีดการใช้งานกลายเป็นล้าสมัย แต่ใช้สำหรับการเยื้องเช่น
printf("stackoverflow\fnine")
stackoverflow
nine
ถ้าฉันจะเขียนเหมือน -
printf("stackoverflow\fnine\fgreat")
stackoverflow
nine
great
printf
ยูทิลิตี้จาก coreutils หรือแม้กระทั่งการใช้echo -en
ซึ่งเป็นทุบตี builtin
\f
เป็นจริง\v
- แท็บแนวตั้งให้ทั้งคู่ดูเหมือนกันในคอนโซล
printf("123\f456\f789");
แสดง /> <bold> 123456789 </bold> บนคอนโซล
ดูที่Wikipedia :
ระบบที่อิงตาม ASCII หรือชุดอักขระที่เข้ากันได้ใช้ LF (Line feed, '\ n', 0x0A, 10 ในรูปทศนิยม) หรือ CR (Carriage return, '\ r', 0x0D, 13 ในรูปทศนิยม) ทีละตัวหรือ CR ตามด้วย LF (CR + LF, 0x0D 0x0A) อักขระเหล่านี้ขึ้นอยู่กับคำสั่งของเครื่องพิมพ์: การป้อนบรรทัดระบุว่ากระดาษหนึ่งบรรทัดควรป้อนออกจากเครื่องพิมพ์และการคืนแคร่พิมพ์ระบุว่าการขนส่งเครื่องพิมพ์ควรกลับไปที่จุดเริ่มต้นของบรรทัดปัจจุบัน
\f
ใช้สำหรับการแบ่งหน้า คุณไม่เห็นผลใด ๆ ในคอนโซล แต่เมื่อคุณใช้ค่าคงที่ตัวละครนี้ในไฟล์ของคุณคุณจะเห็นความแตกต่าง
ตัวอย่างอื่น ๆ คือถ้าคุณสามารถเปลี่ยนเส้นทางของคุณไปยังไฟล์คุณไม่ต้องเขียนไฟล์หรือใช้การจัดการไฟล์
ตัวอย่างเช่น:
เขียนรหัสนี้ใน c ++
void main()
{
clrscr();
cout<<"helloooooo" ;
cout<<"\f";
cout<<"hiiiii" ;
}
และเมื่อคุณรวบรวมสิ่งนี้มันจะสร้าง exe (สำหรับอดีตabc.exe
)
จากนั้นคุณสามารถเปลี่ยนเส้นทางผลลัพธ์ไปยังไฟล์โดยใช้สิ่งนี้:
abc > xyz.doc
จากนั้นเปิดไฟล์ที่xyz.doc
คุณสามารถเห็นตัวแบ่งหน้าจริงระหว่างhellooo และ hiiii ....
นอกเหนือจากข้อมูลข้างต้นยังมีประวัติที่น่าสนใจของ LF (\ n) และ CR (\ r) [ผู้เขียนต้นฉบับ: 阮一峰ที่มา: http://www.ruanyifeng.com/blog/2006/04/post_213.html] ก่อนที่คอมพิวเตอร์จะออกมามีประเภทของเครื่องโทรพิมพ์ที่เรียกว่า Teletype Model 33 สามารถพิมพ์ได้ 10 ตัวอักษรแต่ละตัว ที่สอง แต่มีปัญหาอย่างหนึ่งคือหลังจากเสร็จสิ้นการพิมพ์แต่ละบรรทัดจะใช้เวลา 0.2 วินาทีในการย้ายไปยังบรรทัดถัดไปซึ่งเป็นเวลาของการพิมพ์ 2 ตัวอักษร หากมีการถ่ายโอนตัวละครใหม่ในช่วงเวลา 0.2 วินาทีตัวละครใหม่นี้จะหายไป
ดังนั้นนักวิทยาศาสตร์จึงค้นพบวิธีการแก้ปัญหานี้พวกเขาเพิ่มตัวละครลงท้ายสองตัวหลังจากแต่ละบรรทัดหนึ่งตัวคือ 'Carriage return' ซึ่งบอกให้เครื่องพิมพ์นำหัวพิมพ์ไปทางซ้าย; อีกอันหนึ่งคือ 'การป้อนบรรทัด' มันบอกให้เครื่องพิมพ์เลื่อนกระดาษขึ้น 1 บรรทัด
ต่อมาคอมพิวเตอร์กลายเป็นที่นิยมแนวคิดสองข้อนี้ใช้กับคอมพิวเตอร์ ในเวลานั้นอุปกรณ์เก็บข้อมูลมีราคาแพงมากดังนั้นนักวิทยาศาสตร์บางคนบอกว่ามันแพงที่จะเพิ่มตัวละครสองตัวที่ส่วนท้ายของแต่ละบรรทัดหนึ่งตัวก็เพียงพอแล้วจึงมีข้อโต้แย้งบางประการเกี่ยวกับสิ่งที่จะใช้
ใน UNIX / Mac และ Linux จะใส่ '\ n' ในตอนท้ายของแต่ละบรรทัดใน Windows จะใส่ '\ r \ n' ที่ท้ายบรรทัดแต่ละบรรทัด ผลที่ตามมาของการใช้นี้คือไฟล์ใน UNIX / Mac จะแสดงในหนึ่งบรรทัดหากเปิดใน Windows ในขณะที่ไฟล์ใน Windows จะมีหนึ่ง ^ M ที่ส่วนท้ายของแต่ละบรรทัดหากเปิดใน UNIX หรือ Mac
WRITE.EXE
(aka Wordpad) สามารถแสดงผลได้อย่างดี
ที่หน้ากระดาษเครื่องพิมพ์เก่าให้เข้าสู่บรรทัดถัดไปที่เกี่ยวข้องกับการดำเนินการสองอย่าง: เลื่อนหัวพิมพ์กลับไปที่จุดเริ่มต้นของช่วงสแกนแนวนอน (carriage return) และเลื่อนม้วนกระดาษที่กำลังพิมพ์
เนื่องจากเราไม่ได้ใช้เทอร์มินัลเครื่องพิมพ์กระดาษอีกต่อไปการกระทำเหล่านั้นจึงไม่เกี่ยวข้องกันอีกต่อไป แต่ตัวละครที่ใช้เพื่อส่งสัญญาณนั้นติดอยู่ในสาขาต่าง ๆ
พิจารณาเครื่องพิมพ์ผลกระทบของ IBM 1403 CR ย้ายหัวพิมพ์ไปยังจุดเริ่มต้นของบรรทัด แต่ไม่ได้เลื่อนกระดาษ สิ่งนี้อนุญาตให้ "overprinting" วางหลายบรรทัดในหนึ่งบรรทัด สิ่งที่ต้องการการขีดเส้นใต้ทำได้ด้วยวิธีนี้เช่นเดียวกับการพิมพ์ตัวหนา LF ขั้นสูงกระดาษหนึ่งบรรทัด หากไม่มี CR บรรทัดถัดไปจะพิมพ์เป็นขั้นตอนที่เซเนื่องจาก LF ไม่เลื่อนหัวพิมพ์ FF ขั้นสูงกระดาษไปยังหน้าถัดไป โดยทั่วไปแล้วมันยังย้ายหัวพิมพ์ไปที่จุดเริ่มต้นของบรรทัดแรกในหน้าใหม่ แต่คุณอาจต้องใช้ CR สำหรับสิ่งนั้น เพื่อให้แน่ใจว่าโปรแกรมเมอร์ส่วนใหญ่เขียนรหัส CRFF แทน CRLF ที่ท้ายบรรทัดสุดท้ายในหน้าเพราะ CR พิเศษที่สร้างโดย FF ไม่สำคัญ
ในระยะสั้น:
Carriage_return ( \r
หรือ0xD
): ในการใช้การควบคุมที่เริ่มต้นของบรรทัดเดียวกัน
Line_Feed ( \n
หรือ0xA
): ในการใช้การควบคุมที่เริ่มต้นของบรรทัดถัดไป
form_feed ( \f
หรือ0xC
): ในการใช้การควบคุมที่เริ่มต้นของหน้าถัดไป
เป็นอาหารเสริม
1, Carriage return : เป็นคำศัพท์เครื่องพิมพ์หมายถึงการเปลี่ยนตำแหน่งการพิมพ์เป็นจุดเริ่มต้นของบรรทัดปัจจุบัน ในโลกคอมพิวเตอร์หมายถึงกลับไปที่จุดเริ่มต้นของบรรทัดปัจจุบันในกรณีส่วนใหญ่ แต่หมายถึงบรรทัดใหม่ไม่ค่อย
2, การป้อนบรรทัด : เป็นคำศัพท์เครื่องพิมพ์หมายถึงการเลื่อนกระดาษหนึ่งบรรทัด ดังนั้น Carriage return และ Line feed จะถูกใช้ร่วมกันเพื่อเริ่มพิมพ์ที่จุดเริ่มต้นของบรรทัดใหม่ ในโลกคอมพิวเตอร์นั้นโดยทั่วไปมีความหมายเหมือนกับบรรทัดใหม่
3, ฟีดฟอร์ม : เป็นคำศัพท์เครื่องพิมพ์ฉันชอบคำอธิบายในหัวข้อนี้
หากคุณกำลังเขียนโปรแกรมสำหรับเครื่องพิมพ์สไตล์ปี 1980 มันจะเปิดกระดาษและเริ่มหน้าใหม่ คุณมั่นใจได้อย่างแท้จริงว่าไม่ต้องการมัน
มันเกือบจะล้าสมัยแล้วและคุณสามารถอ้างถึงEscape sequence \ f - ฟอร์มฟีด - มันคืออะไรกันแน่? สำหรับคำอธิบายโดยละเอียด
หมายเหตุเราสามารถใช้ CR หรือ LF หรือ CRLF เพื่อขึ้นบรรทัดใหม่ในบางแพลตฟอร์ม แต่ขึ้นบรรทัดใหม่ไม่สามารถยืนได้ในแพลตฟอร์มอื่น ๆ อ้างถึงวิกิ Newlineสำหรับรายละเอียด
LF: ระบบ Multics, Unix และ Unix (Linux, OS X, FreeBSD, AIX, Xenix, ฯลฯ ), BeOS, Amiga, RISC OS และอื่น ๆ
CR: เครื่องพลเรือจัตวา 8 บิต, Acorn BBC, ZX Spectrum, TRS-80, ตระกูล Apple II, Oberon, Mac OS คลาสสิคถึงเวอร์ชัน 9, MIT Lisp Machine และ OS-9
RS: การนำ QNX ไปใช้ก่อน POSIX
0x9B: เครื่อง Atari 8 บิตโดยใช้ตัวแปร ATASCII ของ ASCII (155 ในรูปทศนิยม)
CR + LF: Microsoft Windows, DOS (MS-DOS, PC DOS, ฯลฯ ), DEC TOPS-10, RT-11, CP / M, MP / M, อาตาริ TOS, OS / 2, Symbian OS, Palm OS, Amstrad CPC และอื่น ๆ ส่วนใหญ่ไม่ใช่ระบบปฏิบัติการ Unix และไม่ใช่ IBM
LF + CR: Acorn BBC และ RISC สปูลเอาท์พุทข้อความ
"\ n" เป็นอักขระตัวดึงบรรทัด มันหมายถึงจบบรรทัดปัจจุบันและไปที่บรรทัดใหม่สำหรับทุกคนที่อ่านมัน
Carriage return และ Line feed ยังมีการอ้างอิงไปยังเครื่องพิมพ์ดีดด้วยเมื่อกดที่ด้ามเล็ก ๆ ที่ด้านซ้ายของแคร่ (ที่ที่ไปกระดาษ) กระดาษจะหมุนรอบ ๆ กระบอกสูบเล็กน้อย เอกสารหนึ่งบรรทัด หากคุณพิมพ์หนึ่งบรรทัดเสร็จแล้วและต้องการที่จะดำเนินการต่อไปคุณจะผลักให้หนักขึ้นทั้งเส้นที่เลื่อนและเลื่อนแคร่ตลับหมึกไปทางขวาจนสุดจากนั้นกลับมาพิมพ์จากซ้ายไปขวาอีกครั้ง . การตัดคำเป็นการตั้งค่าเริ่มต้นสำหรับการประมวลผลคำทั้งหมดในยุคนั้น P: D
เป็นอักขระที่ไม่ได้พิมพ์ซึ่งเกี่ยวข้องกับแนวคิดของ "บรรทัดใหม่" \ n คือ linefeed \ r คือการคืนสินค้า บนแพลตฟอร์มที่ต่างกันพวกเขามีความหมายต่างกันเมื่อเทียบกับบรรทัดใหม่ที่ถูกต้อง ใน windows บรรทัดใหม่คือ \ r \ n ใน linux \ n ใน mac \ r
ในทางปฏิบัติคุณใส่ไว้ในสตริงใด ๆ และมันจะมีผลต่อการพิมพ์ออกจากสตริง