البحث عن سلسلة في ملف في C++
< span style = "عائلة الخط:" فيردانا" ، بلا رقيق ؛" >في لغة C ، يتم تخزين سلسلة في صفيف من أحرف char ، ويمكن لنوع char تخزين حرف (قلنا حرفا واحدا فقط وليس أكثر). يمكنه أيضا تخزين الأرقام بين -128 و 127.< / span>
< / a>نظرا لأن الكمبيوتر لا يفهم سوى الأرقام ، يتم تحويل الحروف إلى أرقام. لذلك يرتبط كل حرف برقم. لغة C تفعل ذلك بسرعة كبيرة. < / span >< span style = "عائلة الخط:" فيردانا" ، بلا رقيق ؛" >على سبيل المثال: < / span >
< / span >< span style = "عائلة الخط: " فيردانا" ، بلا رقيق ؛" >يتوافق الحرف "a" في رمز ASCII مع الرقم 97. للتحقق ، اكتب alt + 97.< / span >< / span >
< / span >< / span >< span style = "عائلة الخط: " ساعي جديد" , " ساعي" ، حافلة صغيرة؛" > نبسب؛ حرف حرف = <نمط الامتداد = "اللون: أحمر ؛" >" إلى "< / امتداد> ؛ < / span >
< span style = "عائلة الخط: " ساعي جديد" , " ساعي" ، حافلة صغيرة؛" > نبسب؛ printf (< نمط الامتداد = "اللون: أحمر ؛" >"٪c\n", letter); < / span >
< span style = "عائلة الخط: " ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >
< / span >< span style = "عائلة الخط: " فيردانا" ، بلا رقيق ؛" > صفحة قناة عبارة عن صفيف من النوع char: < / span >
نبسب؛ نبسب؛ < / span >< span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" > حرف < / span >< span style = "عائلة الخط: " ساعي جديد" , " ساعي" ، حافلة صغيرة؛" > سلسلة [] = < / span >< span style = "اللون: أحمر ؛ عائلة الخط: " ساعي جديد" , " ساعي" ، حافلة صغيرة؛" > "أنا مبرمج" < / span>; < / span >
< span style = "عائلة الخط: " ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >
< / span >< span style = "عائلة الخط: " فيردانا" ، بلا رقيق ؛" >هدفنا هو القراءة من ملف نصي ومعرفة ما إذا كان الملف النصي متاحا. السلسلة موجودة في هذا الملف. لدينا ملف في الدليل < نمط الامتداد = "اللون: أحمر ؛" > "C: / test.txt" < / span >< span style = "اللون: أحمر ؛" >،< / span> < / span >< span style = "اللون: أحمر ؛" يحتوي ملف >c على نص ، على سبيل المثال جملة بسيطة: اسمي X وأنا مبرمج.
< / span >< span style = "عائلة الخط: " فيردانا" ، بلا رقيق ؛" >في C, < / span >< span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" > حرف < / span >< span style = "عائلة الخط: " ساعي جديد" , " ساعي" ، حافلة صغيرة؛" > < / span >< span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" > قناة[] < / span >< span style = "عائلة الخط:" فيردانا" ، بلا رقيق ؛" يتم تمثيل > على النحو التالي: < / span >
< / span >
< حدود الجدول = "1" cellpadding = "0" cellpacing = "0" class = "MsoTableGrid" style = "انهيار الحدود: الانهيار ؛ الحدود: لا يوجد؛ mso-border-alt: نص النافذة الصلبة .5pt ؛ MSO-الحشو البديل: 0 سم 5.4 نقطة 0 سم 5.4 نقطة ؛ MSO-YFTI-TBLLOOK: 1184;" > j | e | s | u | i | s | u | n | p | r | o | g | r | a | m | m | e | u | r | '\0' |
'\0' إلى نهاية الصفيف.
< / span >
< pre class = "prettyprint lang-php">#include < ايوستريم> < فرع />#include < فستريم> < فرع />#include < سلسلة> < فرع />#include < ستريم>
باستخدام مساحة الاسم المنقولة جنسيا ؛
void searchInFile (سلسلة char [])
{
ifstream myStream ("C: / test.txt") ؛
if (myFlow)
{
int i = 0 ، الموضع = 0 ؛
//تتم القراءة لكل حرف
myFlux.clear ();
//تهيئة رأس تشغيل 0
//ios::beg: البدء من start
myFlux.seekg(0, ios::beg);
char c ؛
// طالما أنها ليست نهاية الملف
بينما (myStream.get(c))
{
// زيادة موضع رأس اللعب
++ ؛
// إذا كان الحرف يطابق حرف
//string الذي تبحث عنه في i
//ثم انتقل إلى الحرف التالي
if(c==string[i]){
i++;
// إذا كانت جميع الأحرف في السلسلة
// محددة ، فقد وجدنا السلسلة في
//the file
if (i == strlen (string)) // strlen: ترجع طول السلسلة
printf ("السلسلة التي تم البحث عنها في الموضع: ٪d "
" وتنتهي عند الموضع٪ d \ n ، موقف سترلين (سلسلة) ، موقف) ؛
}
// وإلا إذا وجدنا حرفا واحدا
// لا يتطابق بعد ذلك
// restart من 0
else
i = 0 ؛
}
}
else
printf ("غير قادر على فتح الملف\n");
}
int main()
{
char string[]="a programmer";
searchFile (سلسلة) ؛
النظام ("وقفة") ؛
}