आप प्रत्येक पंक्ति में वर्णों या संख्याओं की संख्या कैसे गिन सकते हैं? क्या ईओएफ की तरह कुछ ऐसा है जो लाइन के अंत की तरह है?टेक्स्ट फ़ाइल में प्रत्येक पंक्ति का लाइन आकार ढूंढना
उत्तर
आप लाइन में प्रत्येक वर्ण के माध्यम से पुनरावृत्त कर सकते हैं और अंतराल ('\n'
) का सामना करना पड़ता है जब तक काउंटर को बढ़ाना जारी रखें। फ़ाइल को टेक्स्ट मोड ("r"
) में खोलना सुनिश्चित करें और बाइनरी मोड ("rb"
) नहीं। अन्यथा स्ट्रीम स्वचालित रूप से '\n'
वर्णों में अलग-अलग प्लेटफॉर्म के लाइन समापन अनुक्रमों को परिवर्तित नहीं करेगा।
यहाँ एक उदाहरण है:
int charcount(FILE *const fin)
{
int c, count;
count = 0;
for(;;)
{
c = fgetc(fin);
if(c == EOF || c == '\n')
break;
++count;
}
return count;
}
यहाँ ऊपर समारोह का परीक्षण करने के लिए एक उदाहरण कार्यक्रम है:
#include <stdio.h>
int main(int argc, char **argv)
{
FILE *fin;
fin = fopen("test.txt", "r");
if(fin == NULL)
return 1;
printf("Character count: %d.\n", charcount(fin));
fclose(fin);
return 0;
}
लाइन द्वारा फ़ाइल लाइन पढ़ने के संबंध में, fgets देखें।
char *fgets(char *restrict s, int n, FILE *restrict stream);
fgets() फ़ंक्शन धारा से में सरणी द्वारा की ओर इशारा किया है, जब तक n-1 बाइट्स पढ़ रहे हैं बाइट्स पढ़ा जाएगा, या एक पढ़ सकते हैं और रों को स्थानांतरित कर रहा है, या एक अंत में फ़ाइल की स्थिति सामने आई है। स्ट्रिंग तब एक शून्य बाइट से समाप्त होती है।
यहां एकमात्र समस्या हो सकती है यदि आप अपनी फ़ाइल में अधिकतम पंक्ति आकार की गारंटी नहीं दे सकते हैं। यदि ऐसा है, तो आप एक पंक्ति फ़ीड देखने तक वर्णों पर फिर से सक्रिय कर सकते हैं।
पंक्ति के अंत के बारे में:
लघु जवाब: \n
न्यू लाइन चरित्र (यह भी एक लाइन फ़ीड कहा जाता है) है।
लांग जवाब है, विकिपीडिया से:
सिस्टम ASCII या एक संगत वर्ण सेट का उपयोग करें या तो वामो (लाइन फ़ीड, 0x0A, 10 दशमलव में) या सीआर (कैरिज रिटर्न, 0x0D, 13 के आधार पर दशमलव में) व्यक्तिगत रूप से, या सीआर के बाद एलएफ (सीआर + एलएफ, 0x0D 0x0A); सीआर + एलएफ सम्मेलन के ऐतिहासिक कारण के लिए नीचे देखें। ये अक्षर प्रिंटर आदेशों पर आधारित होते हैं: लाइन फ़ीड संकेत दिया है कि कागज में से एक लाइन प्रिंटर से बाहर फ़ीड चाहिए, और एक गाड़ी वापसी संकेत दिया कि प्रिंटर गाड़ी वर्तमान पंक्ति के शुरुआत में वापस आने चाहिए।
* LF: Multics, Unix and Unix-like systems (GNU/Linux, AIX, Xenix, Mac OS X, FreeBSD, etc.), BeOS, Amiga, RISC OS, and others
* CR+LF: DEC RT-11 and most other early non-Unix, non-IBM OSes, CP/M, MP/M, DOS, OS/2, Microsoft Windows, Symbian OS
* CR: Commodore 8-bit machines, Apple II family, Mac OS up to version 9 and OS-9
लेकिन जब से तुम एक प्रतिनिधित्व केवल गाड़ी वापसी का उपयोग करता है, ठीक किया जाना चाहिए एक लाइन फ़ीड की तलाश के साथ काम करने की संभावना नहीं हैं।
\n
सी में न्यू लाइन चरित्र इस तरह के सी # के रूप में अन्य भाषाओं, में है, तो आप प्लेटफ़ॉर्म कठिनाइयों को दूर करने के लिए C# के Environment.EndLine
जैसे कुछ का उपयोग कर सकते हैं।
यदि आप पहले से ही जानते हैं कि आपकी स्ट्रिंग एक पंक्ति है (चलिए इसे लाइन कहते हैं), इसमें वर्णों की संख्या प्राप्त करने के लिए strlen(line)
का उपयोग करें। '\n'
के साथ समाप्त होने पर 1 घटाएं।
यदि स्ट्रिंग में इसमें नए पंक्ति वर्ण हैं, तो आपको इसे नए लाइन वर्णों के चारों ओर विभाजित करने की आवश्यकता होगी और फिर प्रत्येक सबस्ट्रिंग पर strlen()
पर कॉल करें।
उसके पास कोई स्ट्रिंग नहीं है, उसके पास एक फ़ाइल है। – danben
आप fopen()
को दूसरा तर्क में पाठ मोड, अर्थात् में एक फ़ाइल, एक b
बिना खोलते हैं, तो आप वर्ण एक-एक करके जब तक आप एक '\n'
मारा लाइन आकार निर्धारित करने पढ़ सकते हैं। अंतर्निहित प्रणाली को लाइन टर्मिनेटर के अंत में केवल एक वर्ण, '\n'
पर अनुवाद करने का ख्याल रखना चाहिए। कुछ सिस्टम पर, टेक्स्ट फ़ाइल की अंतिम पंक्ति '\n'
के साथ समाप्त नहीं हो सकती है, इसलिए यह एक विशेष मामला है।
स्यूडोकोड:
count := 0
c := next()
while c != EOF and c != '\n'"
count := count + 1
ऊपर दिए गए पंक्ति में वर्णों की संख्या की गणना होती है। next()
आपकी फ़ाइल से अगले चरित्र को वापस करने के लिए एक फ़ंक्शन है।
वैकल्पिक रूप से, आप एक बफर के साथ fgets()
उपयोग कर सकते हैं:
char buf[SIZE];
count = 0;
while (fgets(buf, sizeof buf, fp) != NULL) {
/* see if the string represented by buf has a '\n' in it,
if yes, add the index of that '\n' to count, and that's
the number of characters on that line, which you can
return to the caller. If not, add sizeof buf - 1 to count */
}
/* If count is non-zero here, the last line ended without a newline */
क्या आप SIZE को समझा सकते हैं .. मुझे यकीन नहीं है कि यह एक Var है या कमांड सी उपयोग करता है। – MRP
@ एमआरपी: 'SIZE' एक सुविधाजनक सकारात्मक अभिन्न मूल्य है, या तो एक प्री-प्रोसेसर मैक्रो या एक जादू संख्या है। मैंने आपको एक पूर्ण कोड नहीं दिया क्योंकि मुझे यकीन नहीं है कि यह होमवर्क प्रश्न है या नहीं। :-) –
ठीक है अगर SIZE एक संख्या है जिसे मैंने रखा है .. मुझे काम करने के लिए क्या चाहिए, क्योंकि मुझे आकार पता नहीं है .. – MRP
- 1. हैश टेक्स्ट फ़ाइल में प्रत्येक पंक्ति
- 2. फॉर्म टेक्स्ट इनपुट की मूल पंक्ति ढूंढना
- 3. प्रत्येक पंक्ति
- 4. SQL तालिका में टेक्स्ट स्ट्रिंग में लाइन ब्रेक ढूंढना?
- 5. प्रत्येक पंक्ति
- 6. प्रत्येक पंक्ति
- 7. यूनिक्स स्क्रिप्ट प्रत्येक पंक्ति
- 8. मैं टेक्स्ट फ़ाइल में प्रत्येक Xth लाइन को कैसे हटा सकता हूं?
- 9. लाइन/टेक्स्ट
- 10. प्रत्येक पंक्ति में टेक्स्ट व्यू और बटन और onListItemClick()
- 11. स्क्रिप्ट में प्रत्येक पंक्ति की शब्द गणना
- 12. फ़ाइल में प्रत्येक पंक्ति को आउटपुट कैसे करें python
- 13. मैं टेक्स्ट फ़ाइल में निर्दिष्ट पंक्ति कैसे पढ़ूं?
- 14. गतिशील आवंटित सरणी का आकार ढूंढना
- 15. एसक्यूएल क्वेरी परिणाम का आकार ढूंढना
- 16. प्रत्येक पंक्ति के बाद टेक्स्ट जोड़ें, एकाधिक प्रविष्टियां
- 17. प्रत्येक पंक्ति
- 18. टेक्स्ट फ़ाइल में एक संपूर्ण पंक्ति को कैसे बदलें
- 19. जावा में टेक्स्ट फ़ाइल से कुछ पंक्ति कैसे छोड़ें?
- 20. टेक्स्ट फ़ाइल में प्रत्येक पंक्ति से पिछले दो वर्णों को हटाकर
- 21. टेक्स्ट फ़ाइल की प्रत्येक पंक्ति में वर्णों की संख्या को मुद्रित करने के लिए
- 22. इंस्ट्रूमेंट्स में मेमोरी लीक की लाइन ढूंढना
- 23. लाइन php द्वारा टेक्स्ट फ़ाइल लाइन में पढ़ें - न्यूलाइन नहीं पाया जा रहा है
- 24. टेक्स्ट फ़ाइल में अंतिम पंक्ति को कैसे हटाएं?
- 25. प्रत्येक लाइन
- 26. फ़ाइल को कैसे विभाजित करें और प्रत्येक पंक्ति में पहली पंक्ति को रखें?
- 27. प्रत्येक एएसएम निर्देश का आकार क्या है?
- 28. सी ++ टेक्स्ट फ़ाइल पढ़ने का प्रदर्शन
- 29. टेक्स्ट फ़ाइल की पहली पंक्ति पढ़ें, फिर
- 30. टेक्स्ट ढूंढना (एकाधिक बार) और
आपको नई लाइन के सूचकांक प्राप्त करने के लिए वास्तव में चरित्र-दर-चरित्र जाने की आवश्यकता नहीं है। आप '\ n' की अनुक्रमणिका को खोजने के लिए strcspn() का उपयोग कर सकते हैं। (Http://stackoverflow.com/questions/4824/string-indexof-function-in-c देखें) – David
strcspn() और strspn() फ़ाइलों से नहीं पढ़ते हैं। उनका उपयोग करने के लिए, आपको पूरी लाइन को एक स्ट्रिंग में पढ़ना होगा और फिर '\ n' वर्ण खोजने के लिए इसके माध्यम से पुन: पुन: पुन: प्रयास करना होगा। यह कम कुशल है। बेशक, यह इस बात पर निर्भर करता है कि एमआरपी अपनी फाइल आईओ कोड कैसे कर रहा है। – Sam
हां, यह कोड मदद करता है हालांकि मुझे कुछ जगहों को बदलना पड़ा। लेकिन मुझे बेहतर समझ है कि यह कैसे काम करता है .. धन्यवाद – MRP