\n
(নিউলাইন) এবং \r
(ক্যারেজ রিটার্ন) এর মধ্যে পার্থক্য কী ?
বিশেষ করে, থেকে থাকে ব্যবহারিক পার্থক্য \n
এবং \r
? এমন জায়গাগুলি রয়েছে যেখানে অন্যের পরিবর্তে একটি ব্যবহার করা উচিত?
\n
(নিউলাইন) এবং \r
(ক্যারেজ রিটার্ন) এর মধ্যে পার্থক্য কী ?
বিশেষ করে, থেকে থাকে ব্যবহারিক পার্থক্য \n
এবং \r
? এমন জায়গাগুলি রয়েছে যেখানে অন্যের পরিবর্তে একটি ব্যবহার করা উচিত?
উত্তর:
এসকি কোডের ক্ষেত্রে এটি 3 - যেহেতু তারা যথাক্রমে 10 এবং 13 ;-)।
তবে গুরুত্ব সহকারে অনেকগুলি রয়েছে:
\n
লাইন-এর শেষের কোড, \r
মানে বিশেষ কিছুই নয়\n
এটি লাইনের শেষের জন্য স্ট্যান্ডার্ড এস্কেপ ক্রম (প্রয়োজন হিসাবে ওএস-নির্দিষ্ট অনুক্রমগুলিতে / অনুবাদিত)\r
পরিবর্তে লাইনটি শেষের জন্য কোড ছিল\r\n
এই ক্রমে লাইনের শেষের জন্য কোডটি 2 টি অক্ষর\r\n
ইন্টারনেটে পাঠ্য বিন্যাসগুলির জন্য আদর্শ লাইন-সমাপ্তি\r
গাড়িটি বাম দিকে যেতে নির্দেশ দেয় যতক্ষণ না এটি বাম দিকের স্টপটি (একটি ধীরে ধীরে অপারেশন) হিট করে, রোলারকে \n
একটি লাইন রোল করার নির্দেশ দেয় (আরও দ্রুত অপারেশন) - এই কারণটি আপনার কাছে সর্বদা থাকে \r
এর আগে \n
, যাতে গাড়িটি বাম দিকে যেতে চলাকালীন বেলনটি চলাফেরা করতে পারে! -) উইকিপিডিয়ায় আরও বিস্তারিত ব্যাখ্যা রয়েছে ।\r
এবং \n
কার্সার পরিপ্রেক্ষিতে উভয় ছাড়া একভাবে কাজ (, যেহেতু হয় কোন ঘোড়ার গাড়ি বা বেলন ;-)অনুশীলনে, একটি পাঠ্য ফাইলে লেখার আধুনিক প্রসঙ্গে আপনার সর্বদা ব্যবহার করা উচিত \n
(অন্তর্নিহিত রানটাইমটি অনুবাদ করবে যে আপনি যদি কোনও অদ্ভুত ওএস, উদাহরণস্বরূপ, উইন্ডোজ ;-) তে থাকেন তবে। ব্যবহারের একমাত্র কারণ \r
হ'ল আপনি যদি একটি অক্ষর টার্মিনালে লিখছেন (বা সম্ভবত এটি "কনসোল উইন্ডো" যা অনুকরণ করছে) এবং আপনি লিখেছেন পরবর্তী লাইনটি আপনি লিখেছিলেন সর্বশেষটি মুছে ফেলার জন্য (কখনও কখনও বোকা জন্য ব্যবহৃত হয়) এসকি অ্যানিমেশন "উদাহরণস্বরূপ অগ্রগতি বারের প্রভাব) - এটি জিইউআই-র একটি জগতে বেশ অচল হয়ে উঠছে, যদিও ;-)।
\0
পরে অতিরিক্ত নিরীহ অক্ষর (সাধারণত এনএলএইচ ) যুক্ত করা হয়েছিল \n
সময়। এটি ওএস দ্বারা স্বচ্ছভাবে পরিচালনা করা হয়েছিল যাতে আপনি উত্তরাধিকারের কোডটিতে এর কোনও চিহ্ন খুঁজে পাবেন না।
\r
(আমি লিনাক্স ব্যবহার করছি) সম্পর্কে ভুলে গেছি । একবার আমি যা বৈধ ফাইল বলে মনে হয়েছিল তা পার্স করা শুরু করলে আমার পার্সার ব্যর্থ হয়েছিল কারণ আমি যে ফাইলটি পার্সিং করছি তা উইন্ডোজটিতে তৈরি করা হয়েছে। : ডি সব প্রধান সমস্যা হল যে তন্ন তন্ন \n
বা \r
অর্থে দৃশ্যমান যে উদাহরণস্বরূপ a
, .
, (
ইত্যাদি অক্ষর।
Ically \n
তিহাসিকভাবে গাড়িটি নীচে নামানোর জন্য একটি ব্যবহার করা হত, যখন \r
পাতার বাম দিকে গাড়িটি সরিয়ে নিতে ব্যবহৃত হত।
printf("abcdefghijlm\rNOP\n");
ওপেনসুতে জিসিসি -8 দিয়ে সংকলিত এই সি কোডটি বিবেচনা করুন এবং এই আউটপুটটিতে টার্মিনালের ফলাফলগুলি চালান NOPdefghijlm
। স্ট্রিংয়ের \ r (ক্যারেজ রিটার্ন) ফলাফলটি কার্সারের ফলে লাইন (ক্যারিজ) এর শুরুতে এবং the r (অর্থাৎ "এনওপি") এর পরে থাকা অক্ষরগুলি পূর্বে সেখানে ছিল (যেমন "এবিসি") ওভাররাইট করে! আপনি ব্যাকস্পেস (\ বি) এর সাথে একই রকম "ক্যারেজ চলাচল" অর্জন করতে পারেন printf("abcdefghijlm\b\bNOP\n");
যা উত্পাদন করেabcdefghijNOP
দুটি ভিন্ন চরিত্র।
\n
ইউনিক্স পাঠ্য ফাইলগুলিতে একটি শেষ-লাইন টার্মিনেটর হিসাবে ব্যবহৃত হয়
\r
ম্যাক পাঠ্য ফাইলগুলিতে একটি শেষ-লাইন টার্মিনেটর হিসাবে ব্যবহৃত হয়
\r\n
(যেমন উভয়) উইন্ডোজ এবং ডস পাঠ্য ফাইলগুলিতে লাইনগুলি শেষ করতে ব্যবহৃত হয়।
\r
একটি ম্যাকের উপর দীর্ঘকাল ধরে লাইন-শেষ হচ্ছে না। 2001 সালে ম্যাক ওএস এক্স প্রকাশের সাথে (যা ইউনিক্স ভিত্তিক), \n
এখন ব্যবহৃত হয়।
\r
- যেমন এমএস অফিস ২০১১ এক্সেল: একটি সিএসভি সংরক্ষণ করা (সমস্ত ডিফল্ট সেটিংস সহ) - \r
লাইন -এন্ডিং সহ একটি আইএসও -8859-1 এনকোডযুক্ত ফাইল সংরক্ষণ করবে ।
যেহেতু অন্য কেউ এটি নির্দিষ্টভাবে উল্লেখ করেনি (তারা জানতে / মনে রাখতে খুব কম বয়সী?) - আমি \r\n
টাইপরাইটার এবং অনুরূপ ডিভাইসগুলির জন্য উত্পন্ন উত্স ব্যবহারটি সন্দেহ করি ।
যখন আপনি একটি বহু-লাইন-সক্ষম টাইপরাইটার ব্যবহার করার সময় একটি নতুন লাইন চেয়েছিলেন, তখন এটি করার জন্য দুটি শারীরিক ক্রিয়া ছিল: পৃষ্ঠার প্রারম্ভের (বামে, মার্কিন) পিছনে গাড়িটি স্লাইড করুন এবং কাগজটিকে একটি খাঁজ পর্যন্ত খাওয়ান ।
লাইনের প্রিন্টারের দিনগুলিতে সাহসী পাঠ্য করার একমাত্র উপায়, উদাহরণস্বরূপ, একটি নতুন লাইন ছাড়াই একটি ক্যারেজ রিটার্ন করা এবং পুরানোগুলির উপরে একই অক্ষরগুলি মুদ্রণ করা ছিল, এইভাবে আরও কালি যুক্ত করা হয়েছিল, ফলে এটি গা appear় দেখা দেয় (গাed়) । যান্ত্রিক "নিউলাইন" ফাংশন কোনও টাইপরাইটারে ব্যর্থ হলে, এটি বিরক্তিকর ফলাফল: আপনি মনোযোগ না দিলে আপনি পূর্ববর্তী পাঠ্যটিতে টাইপ করতে পারেন।
বিভিন্ন অপারেটিং সিস্টেমের জন্য দুটি আলাদা অক্ষর। এছাড়াও এটি প্রেরণ করা ডেটাতে একটি ভূমিকা পালন করে TCP/IP
যার ব্যবহার প্রয়োজন\r\n
।
\n
ইউনিক্স
\r
ম্যাক
\r\n
উইন্ডোজ এবং ডস
শেষ করতে,
শেল (বাশ) স্ক্রিপ্টে, আপনি \r
কার্সারটি পাঠাতে, লাইনে সামনের দিকে এবং অবশ্যই \n
একটি নতুন লাইনে কার্সারটি ব্যবহার করতে পারেন ।
উদাহরণস্বরূপ, চেষ্টা করুন:
echo -en "AA--AA" ; echo -en "BB" ; echo -en "\rBB"
AA--AA
AA--AABB
BB--AABB
তবে -en
পরামিতি হিসাবে ব্যবহার করতে ভুলবেন না ।
উইন্ডোগুলিতে, \ n পরবর্তী লাইনের শুরুতে চলে যায়। \ R পরবর্তী লাইনে না সরে বর্তমান লাইনের শুরুতে চলে যায়। আমি আমার নিজস্ব কনসোল অ্যাপ্লিকেশনগুলিতে have r ব্যবহার করেছি যেখানে আমি কিছু কোড পরীক্ষা করছি এবং আমি আমার স্ক্রিনটি টেক্সট স্ক্রোল করে দেখতে চাই না, তাই কিছু পাঠ্য প্রিন্ট করার পরে use n ব্যবহার করার চেয়ে, একটি ফ্রেমের হার ( এফপিএস), আমি মুদ্রণ করব ("% - 10 ডি \ আর", এফপিএস); এটি কার্সারটি পরের লাইনে না গিয়ে লাইনের শুরুতে ফিরে আসবে এবং স্ক্রিনে স্ক্রোল না হওয়া স্ক্রিনে আমাকে অন্যান্য তথ্য রাখার অনুমতি দেয় যখন ফ্রেমরেট একই লাইনে নিয়মিত আপডেট করে (% -10 তোলে) নির্দিষ্ট আউটপুট কমপক্ষে 10 টি অক্ষরযুক্ত, বাম ন্যায়সঙ্গত তাই এটি ফাঁকের ফাঁকে ফাঁকে শেষ হয়, সেই লাইনের জন্য কোনও পুরানো মানকে ওভাররাইট করে)। এটি এই জাতীয় জিনিসগুলির জন্য বেশ সহজ,
একটু ইতিহাস
/ আর এর অর্থ দাঁড়ায় "রিটার্ন" বা "ক্যারেজ রিটার্ন" যা টাইপ রাইটারের কাছে তার ইতিহাস owণী। কোনও ক্যারেজ রিটার্ন আপনার গাড়িটিকে সমস্ত দিক থেকে ডানদিকে নিয়ে যায় যাতে আপনি লাইনের শুরুতে টাইপ করে যাচ্ছিলেন।
/ এন এর অর্থ দাঁড়ায় "নতুন লাইন", আবার টাইপরাইটার দিন থেকে আপনি একটি নতুন লাইনে চলে এসেছেন। এটি প্রারম্ভিকভাবে শুরু করার পরে নয়, এই কারণেই কিছু ওএস উভয়ই / আর রিটার্ন উভয়ের প্রয়োজনীয়তা অনুসরণ করেছিল, তারপরে একটি টাইপ রাইটার এটির আদেশ ছিল। এটি পুরানো ৮ বিট কম্পিউটারগুলিও ব্যাখ্যা করে যা ব্যবহৃত হয়েছিল "প্রবেশের পরিবর্তে" "রিটার্ন" রাখতে "ক্যারিজ রিটার্ন" থেকে, যা পরিচিত ছিল।
শুধু বিভ্রান্তি যুক্ত করতে, আমি একটি ব্রাউজারের একটি HTML পৃষ্ঠায় একটি টেক্সটরিয়া উপাদান ব্যবহার করে একটি সাধারণ পাঠ্য সম্পাদক এ কাজ করছি। সিআর / এলএফের সাথে সামঞ্জস্যের দুর্দশার প্রত্যাশায়, আমি প্ল্যাটফর্মটি যাচাই করার জন্য কোডটি লিখেছিলাম এবং প্ল্যাটফর্মের জন্য যে কোনও নিউলাইন কনভেনশন প্রযোজ্য তা ব্যবহার করেছিলাম।
যাইহোক, আমি একটি ছোট জাভাস্ক্রিপ্ট ফাংশনের মাধ্যমে টেক্সটআরিয়ায় থাকা প্রকৃত অক্ষরগুলির চেক করার সময় আকর্ষণীয় কিছু আবিষ্কার করেছি যা অক্ষরের সাথে সম্পর্কিত হেক্স ডেটা উত্পন্ন করে।
পরীক্ষার জন্য, আমি নিম্নলিখিত পাঠ্যটিতে টাইপ করেছি:
হ্যালো, ওয়ার্ল্ড [প্রবেশ করুন]
বিদায়, নিষ্ঠুর বিশ্ব [প্রবেশ]
আমি যখন পাঠ্যের ডেটা পরীক্ষা করেছি, তখন আমি যে বাইট ক্রমটি পেয়েছি তা হ'ল:
48 65 6c 6c 6f 2c 20 57 6f 72 6c 64 0a 47 6f 6f 64 62 79 65 2c 20 43 72 75 65 6c 20 57 6f 72 6c 64 0 ক
এখন, বেশিরভাগ লোকেরা এটি দেখে এবং 0 এ কিন্তু 0 ডি বাইট না দেখে তারা মনে করবে যে এই আউটপুটটি ইউনিক্স / লিনাক্স প্ল্যাটফর্মে প্রাপ্ত হয়েছিল। তবে, ঘষামাজা: উইন্ডোজ 7 64-বিটে গুগল ক্রোমে আমি এই ক্রমটি পেয়েছি in
সুতরাং, আপনি যদি কোনও টেক্সটরিয়া উপাদান ব্যবহার করছেন এবং পাঠ্যটি পরীক্ষা করছেন, তবে আপনার টেক্সটরিয়া থেকে প্রকৃত চরিত্রের বাইটগুলি কী ফিরে এসেছে তা নিশ্চিত করার জন্য উপরের মতো আউটপুটটি পরীক্ষা করে দেখুন। এটি অন্য প্ল্যাটফর্ম বা অন্যান্য ব্রাউজারগুলিতে আলাদা হয় কিনা তা আমি এখনও দেখতে পেলাম, তবে আপনি জাভাস্ক্রিপ্টের মাধ্যমে পাঠ্য প্রক্রিয়াকরণ সম্পাদন করছেন কিনা তা মনে রাখা উচিত এবং আপনাকে সেই পাঠ্য প্রক্রিয়াকরণ প্ল্যাটফর্মটি স্বাধীন করতে হবে।
উপরোক্ত পোস্টগুলিতে আচ্ছাদিত কনভেনশনগুলি কনসোল আউটপুটটিতে প্রযোজ্য , তবে এইচটিএমএল উপাদানগুলি ইউএনআইএক্স / লিনাক্স কনভেনশন মেনে চলে। যদি না কেউ অন্য কোনও প্ল্যাটফর্ম / ব্রাউজারে অন্যথায় আবিষ্কার করে।
#include <stdio.h>
void main()
{
int countch=0;
int countwd=1;
printf("Enter your sentence in lowercase: ");
char ch='a';
while(ch!='\r')
{
ch=getche();
if(ch==' ')
countwd++;
else
countch++;
}
printf("\n Words = ",countwd);
printf("Characters = ",countch-1);
getch();
}
এই উদাহরণটি ধরুন \ r এর জায়গায় putting n রাখার চেষ্টা করুন এটি কার্যকর হবে না এবং অনুমান করার চেষ্টা করবে কেন?
Return
এবং Enter
। এমনকি আমার আধুনিক ওয়্যারলেস কীবোর্ডটি এখনও পুরানো Return
কীতে ডাউন এবং পিছনের তীরটি দেখায় (যা এখন "এন্টার" শিরোনামে সংখ্যার কীপ্যাডের Enter
কীটির সাথে সামঞ্জস্যপূর্ণ , যা তীরটি দেখায় না)
\ N (নিউলাইন) এবং \ আর (ক্যারেজ রিটার্ন) এর মধ্যে পার্থক্য কী?
বিশেষ করে, সেখানে মধ্যে কোনো ব্যবহারিক পার্থক্য আছে
\n
এবং\r
? এমন জায়গাগুলি রয়েছে যেখানে অন্যের পরিবর্তে একটি ব্যবহার করা উচিত?
তাদের মধ্যে স্বতন্ত্র পার্থক্য কোথায় তা চিত্রিত করার \n
জন্য আমি নতুন লাইনের \r
জন্য এবং গাড়ীর ফেরার জন্য প্রাসঙ্গিক পালনের ক্রমগুলির সাথে একটি ছোট্ট পরীক্ষা করতে চাই ।
আমি জানি, এই প্রশ্নটি ভাষা-স্বাধীন হিসাবে জিজ্ঞাসা করা হয়েছিল। যাইহোক, আমাদের কমপক্ষে একটি ভাষা প্রয়োজন পরীক্ষাটি সম্পন্ন করার জন্য। আমার ক্ষেত্রে, আমি সি ++ বেছে নিয়েছি, তবে পরীক্ষাটি সাধারণত কোনও প্রোগ্রামিং ভাষায় প্রযোজ্য হবে।
প্রোগ্রামটি কেবলমাত্র একটি বাক্য মুদ্রণের জন্য পুনরাবৃত্তি করে যা একটি লুপ পুনরাবৃত্তি দ্বারা সম্পন্ন হয় le
নিউলাইন প্রোগ্রাম:
#include <iostream>
int main(void)
{
for(int i = 0; i < 7; i++)
{
std::cout << i + 1 <<".Walkthrough of the for-loop \n"; // Notice `\n` at the end.
}
return 0;
}
আউটপুট:
1.Walkthrough of the for-loop
2.Walkthrough of the for-loop
3.Walkthrough of the for-loop
4.Walkthrough of the for-loop
5.Walkthrough of the for-loop
6.Walkthrough of the for-loop
7.Walkthrough of the for-loop
লক্ষ্য করুন, এই ফলাফলটি কোনও সিস্টেমে সরবরাহ করা হবে না , আপনি এই সি ++ কোডটি কার্যকর করছেন। তবে এটি সবচেয়ে আধুনিক সিস্টেমে কাজ করবে। আরো বিস্তারিত জানার জন্য নিচে পড়ুন।
এখন, একই প্রোগ্রাম, কিন্তু পার্থক্য সঙ্গে, যে \n
\r
এটি মুদ্রণ ক্রম শেষে প্রতিস্থাপন করা হয়।
ক্যারেজ রিটার্ন প্রোগ্রাম:
#include <iostream>
int main(void)
{
for(int i = 0; i < 7; i++)
{
std::cout << i + 1 <<".Walkthrough of the for-loop \r"; // Notice `\r` at the end.
}
return 0;
}
আউটপুট:
7.Walkthrough of the for-loop
লক্ষ্য করা গেল কোথায় পার্থক্য? পার্থক্যটি কেবল তেমনি, আপনি যখন \r
প্রতিটি মুদ্রণ ক্রমের শেষে ক্যারেজ রিটার্ন সিকোয়েন্সটি ব্যবহার করেন, তখন এই ক্রমের পরবর্তী পুনরাবৃত্তি নিম্নলিখিত পাঠ্য লাইনে প্রবেশ করে না - প্রতিটি মুদ্রণ ক্রমের শেষে, কার্সারটি হয়নি পরবর্তী লাইনের * প্রারম্ভে লাফিয়ে উঠল।
পরিবর্তে, কার্সারটি লাইনের শুরুতে ফিরে গেল, যার উপরে সে ব্যবহারের আগে তার শেষে ছিল \r
অক্ষরের । - ফলাফলটি মুদ্রণ ক্রমের প্রতিটি নিম্নলিখিত পুনরাবৃত্তি পূর্ববর্তীটি প্রতিস্থাপন করছে।
* দ্রষ্টব্য: একটি \n
অগত্যা নিম্নলিখিত পাঠ্য লাইনের শুরুতে ঝাঁপ দেয় না। কারও কারও কাছে, সাধারণভাবে প্রবীণদের মধ্যে, অপারেশন সিস্টেমগুলি \n
নতুন লাইনের চরিত্রের ফলাফল হতে পারে, এটি কেবল প্রথম দিকে নয়, নিম্নলিখিত পংক্তির যে কোনও জায়গায় যেতে পারে। এই কারণেই, তারা \r \n
পরবর্তী পাঠ্য লাইনের শুরুতে ব্যবহার করতে পারা যায় ।
এই পরীক্ষাটি আমাদের মুদ্রণ ক্রমের পুনরাবৃত্তির আউটপুট প্রসঙ্গে নিউলাইন এবং ক্যারেজ রিটার্নের মধ্যে পার্থক্য দেখায় ।
সম্পর্কে আলোচনা করার সময় কোনও প্রোগ্রামের ইনপুট , কিছু টার্মিনাল / কনসোল আরও ভাল বহনযোগ্যতা, সামঞ্জস্যতা এবং নিখরচায়তার জন্য অন্তর্নিহিতভাবে একটি ক্যারেজ রিটার্নটিকে একটি নতুন লাইনে রূপান্তর করতে পারে।
তবে আপনার যদি অন্যের জন্য একটি বাছাই করার পছন্দ থাকে বা কেবল একটি নির্দিষ্টটিকে স্পষ্টরূপে ব্যবহার করতে চান বা আপনার প্রয়োজন হয় তবে আপনার সর্বদা এটির সাথে কাজ করা উচিত, এটি তার উদ্দেশ্য অনুসারে ফিট করে এবং এর মধ্যে কঠোরভাবে পার্থক্য করতে পারে।