يتم استخدام وظيفة سترتوك إس في لغة البرمجة سي لتقسيم سلسلة إلى رموز منفصلة باستخدام المحددات. بل هو نسخة محسنة من وظيفة سترتوك ومصممة لمعالجة سلسلة آمنة.
والميزة الرئيسية لوظيفة سترتوك هو أنه يجعل سلسلة معالجة موضوع آمنة ويتطلب وظيفة الدعوة لتحديد صراحة حجم المخزن المؤقت للحفاظ على الحالة الداخلية للوظيفة. هذا يتجنب تجاوزات المخزن المؤقت ويزيد من الأمان أثناء معالجة سلسلة مؤشرات الترابط.
لاستخدام وظيفة سترتوك_س ، يجب تمريرها مؤشر إلى سلسلة التي ينبغي تقسيمها إلى الرموز ، مؤشر إلى متغير التي سيتم تخزين الحالة الداخلية للدالة ، ومؤشر إلى سلسلة محددة. تقوم الدالة بإرجاع مؤشر إلى الرمز المميز الأول أو فارغ إذا تم استخراج جميع الرموز المميزة أو كانت السلسلة التي تم تمريرها فارغة.
- الرمز المميز = سترتوك_س (لا شيء ، "" ، و تالي_توكين);
- }
- العودة 0;
- }
- لذلك ، فإن وظيفة سترتوك_س هي أداة قوية لتقسيم السلاسل إلى الرموز باستخدام المحددات. أمنها وسلامة الخيط تجعلها الخيار المفضل لمعالجة السلسلة في لغة البرمجة ج.
- ما هي وظيفة سترتوك في ج وكيف يعمل?
- تحديد وظيفة سترتوك
كيفية استخدام وظيفة سترتوك
معلمات وظيفة سترتوك
قيمة الإرجاع من وظيفة سترتوك
مثال على استخدام وظيفة سترتوك
ميزات وظيفة سترتوك
- سؤال وجواب
- كيف يمكنني استخدام وظيفة سترتوك_س لتقسيم سلسلة إلى سلاسل فرعية?
- ما هي الأحرف المحددة التي يمكن استخدامها مع وظيفة سترتوك إس?
ما هي الميزات التي يجب مراعاتها عند استخدام وظيفة سترتوك إس?
- - مؤشر إلى سلسلة تحتاج إلى تقسيمها إلى سلاسل فرعية.
- تتكون عملية وظيفة سترتوك من عدة مراحل:
- الوقت ، يتم تمرير مؤشر إلى سلسلة المصدر التي تحتاج إلى تقسيم كمعلمة ستر. على المكالمات اللاحقة
- تبحث الدالة في السلسلة المصدر عن أول ظهور لأي حرف محدد من
- ستربرك
.
إذا تم العثور على حرف فاصل ، فإن الدالة تستبدله بحرف نهاية السطر
'\0'
وإرجاع مؤشر إلى بداية السلسلة الفرعية التي تم العثور عليها. وبالتالي ، يتم تقسيم السلسلة الأصلية الآن إلى قسمين: قبل الفاصل وبعد الفاصل.
في استدعاءات الوظائف اللاحقة ، يتم تمرير قيمة المؤشر
لاغية
بدلا من ذلك
من المعلمة ستر
. يتيح لك ذلك متابعة تقسيم السلسلة من السلسلة الفرعية التالية ، بدءا من حرف المحدد السابق.
Если символ-разделитель не найден, функция возвращает значение
NULL
, что указывает на конец строки и окончание разбиения.
Пример использования функции strtok_s:
#include
#include
int main() {
char str[] = "Пример использования функции strtok_s в C";
const char delimiters[] = " ,";
char* token = strtok_s(str, delimiters, &context);
while (token != NULL) {
printf("%s
", token);
token = strtok_s(NULL, delimiters, &context);
return 0;
مثال
سترتوك
| وظيفة في |
|---|
C
- تعريف سترتوك
- - هذه هي وظيفة لغة البرمجة ج التي تستخدم لتقسيم سلسلة إلى سلاسل فرعية (الرموز) باستخدام فاصل.
- إلى وظيفة سترتوك
من وظيفة سترتوك
يبدو مثل هذا:
شار * سترتوك_س (شار * تقييد شارع ، كونست شار * تقييد المحددات، شار * * تقييد السياق);
تأخذ الوظيفة ثلاث وسيطات:
شارع
هو مؤشر إلى الحرف الأول من السلسلة المراد تقسيمها.
- المحددات
- - مؤشر إلى مجموعة المحددات التي سيتم استخدامها لفصل السلسلة. يمكن أن تكون المحددات حرفا واحدا أو أكثر.
- السياق
- مؤشر إلى مؤشر حيث سيتم حفظ الحالة الحالية لاستدعاءات الوظائف اللاحقة. هذا يجعل من الممكن الاستمرار في تقسيم نفس السلسلة بعد المكالمة السابقة.
وظيفة
سترتوك
إرجاع مؤشر إلى الرمز المميز التالي أو فارغ إذا تم العثور على جميع الرموز المميزة بالفعل أو كانت سلسلة الإدخال فارغة.
كيفية استخدام وظيفة سترتوك
يتم استخدام وظيفة سترتوك إس في لغة البرمجة سي لتقسيم سلسلة إلى سلاسل فرعية باستخدام محدد محدد. يوفر القدرة على استخراج سلاسل فرعية متتالية من سلسلة المصدر.
لاستخدام وظيفة سترتوك_س ، تحتاج إلى توصيل ملف الرأس.
يبدو النموذج الأولي لوظيفة سترتوك مثل هذا:
شار * سترتوك (شار * ستر ، كونست شار * ديليم ، شار **السياق);
شارع هو مؤشر إلى سلسلة المصدر المراد تقسيمها.
ديليم هو مؤشر إلى الفاصل. مجموعة الأحرف التي سيتم استخدامها لفصل السلسلة.
السياق هو مؤشر إلى مؤشر يخزن الحالة الداخلية لوظيفة سترتوك_س بين المكالمات المتتالية.
تقوم دالة سترتوك إس بإرجاع مؤشر إلى السلسلة الفرعية الأولى التي تم العثور عليها. Для получения последующих подстрок следует вызывать функцию с первым аргументом NULL.
Пример использования функции strtok_s:
#include
#include
int main() {
char str[] = "Hello World! This is a sample string.";
char delim[] = " .!";
char *token;
// Извлечение первой подстроки
token = strtok_s(str, delim, &context);
while (token != NULL) {
printf("%s
", token);
token = strtok_s(NULL, delim, &context);
}
return 0;
}
- في هذا المثال ، السطر الأصلي هو " مرحبا بالعالم! هذه سلسلة عينة."ينقسم إلى سلاسل فرعية باستخدام أحرف المسافة والنقطة وعلامة التعجب كمحددات. يتم إخراج كل سلسلة فرعية على سطر منفصل.
- إخراج البرنامج:
- أهلاً
العالم
هذا
هو
a
عينة
سلسلة
وبالتالي ، فإن وظيفة سترتوك يجعل من السهل تقسيم سلسلة إلى سلاسل فرعية على أساس الفاصل المحدد.
معلمات وظيفة سترتوك
يتم استخدام وظيفة سترتوك إس من مكتبة سي لتقسيم سلسلة إلى رموز مميزة منفصلة (أجزاء) بناء على المحددات. يقبل ثلاث معلمات:
شار * شارع: مؤشر إلى الخط المراد تقسيمه.
كونست شار * ديليم: مؤشر إلى سلسلة تحتوي على المحددات. سيتم استخدام جميع الأحرف من هذه السلسلة كمحددات لتقسيم السلسلة إلى رموز مميزة.
شار * * السياق: مؤشر إلى مؤشر إلى سياق. يتم استخدام هذه المعلمة لحفظ الحالة بين استدعاءات الوظائف. في استدعاء الدالة الأولى ، يجب تهيئته إلى فارغ.
في كل مرة يتم استدعاء وظيفة سترتوكس ، فإنه يعود مؤشر إلى الرمز المميز التالي من السلسلة. إذا تم العثور على رمز مميز ، يتم إرجاعه نتيجة لذلك ، ويشير مؤشر السياق إلى بداية الرمز المميز التالي. إذا لم يتم العثور على الرمز المميز ، ترجع الدالة فارغة.
قيمة الإرجاع من وظيفة سترتوك
يتم استخدام وظيفة سترتوك إس من مكتبة ج لتقسيم سلسلة إلى رموز منفصلة. يقوم بإرجاع مؤشر إلى الحرف الأول من الرمز المميز التالي ، أو فارغ إذا تم استخراج جميع الرموز المميزة بالفعل أو إذا كانت السلسلة فارغة.
عندما يتم استدعاء وظيفة سترتوك_س لأول مرة ، يتم تمرير المعلمة الأولى مؤشر إلى سلسلة التي تحتاج إلى تقسيمها إلى الرموز. ثم يتم تمرير مؤشر إلى الحرف الفاصل ، وهذا الحرف هو الفاصل بين الرموز المميزة. في المكالمة الأولى ، تبحث الدالة عن الحرف المحدد الأول في السلسلة وتستبدله بحرف فارغ. في المرة الثانية التي يتم فيها استدعاء الدالة بدون قيمة كمعلمة أولى ، تستمر في البحث عن حرف المحدد التالي وما إلى ذلك حتى تصل إلى نهاية السطر أو تعثر على حرف المحدد التالي.
قيمة الإرجاع من وظيفة سترتوك_س هو مؤشر إلى الحرف الأول من الرمز المميز التالي. الرمز المميز هو سلسلة من الأحرف بين المحددات. بالنسبة للمكالمات اللاحقة إلى وظيفة سترتوك ، يجب تمرير إشارة إلى الحرف الأول من الرمز المميز التالي كمعلمة أولى. إذا تم بالفعل استخراج جميع الرموز المميزة أو إذا كانت السلسلة الأصلية فارغة ، فإن وظيفة سترتوك_س ترجع فارغة.
Str سترتوكs:
# تشمل
# تشمل
كثافة العمليات الرئيسية () {
شار شارع [] = " مرحبا, العالمية! كيف حالك؟";
شار * رمز = سترتوك_س (شارع,",!?");
بينما (رمز != لاغية) {
برينتف ("٪ق
"،رمز);
الرمز المميز = سترتوك_س (فارغ,",!?");
}
العودة 0;
}
Результат выполнения этого кода будет следующим:
أهلاً
العالم
كيف
هي
أنت
Hello " مرحبا ، العالم! كيف حالك؟"وهي مقسمة إلى رموز منفصلة ، باستخدام مسافة وفاصلة وعلامة تعجب كفواصل. تستخرج وظيفة سترتوك وتطبع كل رمز على حدة.
بفضل وظيفة سترتوك ، يمكنك بسهولة تقسيم سلسلة إلى أجزاء منفصلة ، والتي يمكن أن تكون مفيدة عند معالجة البيانات النصية مفصولة بأحرف معينة.
مثال على استخدام وظيفة سترتوك
وظيفة سترتوك إس هي أداة قوية لتقسيم سلسلة إلى سلاسل فرعية باستخدام محدد محدد. هنا مثال على استخدام الدالة:
# تشمل
# تشمل
كثافة العمليات الرئيسية () {
شار ستر [] = "مثال على استخدام وظيفة سترتوك إس";
شار ديليم []="";
توكن = سترتوك إس (نول ، ديليم ، و نيكست توكين);
مع المعلمات
شارع
,
ديليم
و
التالي_توكين
. بعد ذلك ، نقوم بتشغيل حلقة نطبع فيها كل سلسلة فرعية وندعو
سترتوك
، تمريرها إلى
لاغية
كما المعلمة الأولى ، لمواصلة تقسيم السلسلة.
سيبدو الإخراج التقريبي للبرنامج كما يلي:
مثال
من استخدام
وظيفة سترتوك
وبالتالي ، فإن الوظيفة
سترتوك
يجعلها مريحة للغاية لتقسيم السلاسل إلى سلاسل فرعية باستخدام فاصل محدد.
ميزات وظيفة سترتوك
تم تصميم وظيفة سترتوك لتقسيم سلسلة إلى الرموز باستخدام فاصل محدد. هذه الوظيفة هي اختلاف في وظيفة سترتوك ، ولكن مع تحسين الأمن والقدرة على العمل مع تعدد مؤشرات الترابط.
الميزة الرئيسية لوظيفة سترتوك هو استخدام ثلاث معلمات: مؤشر إلى السلسلة المصدر ، ومؤشر إلى سلسلة المحدد ، ومؤشر إلى متغير من نوع شار * للحفاظ على سياق تقسيم السلسلة بين استدعاءات الدالة.
على عكس وظيفة سترتوك ، تتطلب وظيفة سترتوك إشارة صريحة لحجم المخزن المؤقت الذي يتم تخزين سلسلة المصدر فيه. هذا يجعل وظيفة سترتوك أكثر أمانا ويمنع مشاكل تجاوز سعة المخزن المؤقت المحتملة.
ميزة أخرى مهمة لوظيفة سترتوك هي القدرة على العمل مع تعدد مؤشرات الترابط. تقوم وظيفة سترتوك بتخزين المعلومات حول الموضع الحالي في السلسلة في متغير نوع شار * تم تمريره كسياق. Это позволяет использовать функцию strtok_s в многопоточной среде без опасений о некорректном разделении строк.
Пример использования функции strtok_s:
#include
#include
int main() {
char str[] = "Hello, world! Welcome to C programming.";
char delimiters[] = " ,.!";
char *token;
char *context = NULL;
- token = strtok_s(str, delimiters, &context);
- while (token != NULL) {
- printf("%s
- ", token);
token = strtok_s(NULL, delimiters, &context);
}
return 0;
}
في هذا المثال ، يتم استخدام وظيفة سترتوك لتقسيم سلسلة ستر إلى الرموز باستخدام المحددات: المسافات والفواصل والنقاط وعلامات التعجب. في كل تكرار لحلقة بينما ، تقوم وظيفة سترتوك بإرجاع رمز مميز آخر ، والذي يتم عرضه بعد ذلك على الشاشة. بعد إخراج الرمز المميز الأخير ، ترجع وظيفة سترتوك_س فارغة ، مما يقطع الحلقة وينهي البرنامج.
كيف تعمل وظيفة سترتوك تحت غطاء المحرك
ال وظيفة سترتوك إس هي واحدة من المعيار ج وظائف اللغة لتقسيم سلسلة إلى سلاسل فرعية بناء على المحددات. ويوفر وسيلة مريحة لاستخراج الرموز الفردية من سلسلة.
من أجل فهم كيفية عمل وظيفة سترتوك ، دعونا ننظر في مبدأ عملها:
تأخذ الدالة ثلاث معلمات: مؤشر إلى السلسلة المصدر ، وفاصل ، ومؤشر إلى مؤشر إلى الحدوث التالي للفاصل في السلسلة أو فارغ في المكالمة الأولى.
عندما يتم استدعاء الدالة لأول مرة ، فإنه يبحث عن أول حدوث فاصل في سلسلة ويستبدلها بحرف فارغ. كما أنه يخزن مؤشر إلى الحرف التالي بعد الفاصل للمكالمات اللاحقة.
بعد ذلك ، تقوم الدالة بإرجاع مؤشر إلى الرمز المميز الأول في السلسلة ، والذي يبدأ من بداية السلسلة وينتهي بالفاصل الأول.
في المكالمات اللاحقة مع نول كوسيطة أولى ، تستمر الدالة في البحث عن التكرار التالي للفاصل في السلسلة وتكرر عملية التقسيم إلى رموز مميزة.
مثال على استخدام وظيفة سترتوك:
# تشمل
# تشمل
كثافة العمليات الرئيسية () {
- شار شارع [] = "مرحبا العالم, مثال";
- محددات شار []="،";
- شار * بتر;
بتر = سترتوك_س(ستر ، المحددات ، و بتر);
بينما (بتر != لاغية) {
برينتف ("٪ق
"،بتر);
بتر = سترتوك_س(نول ، المحددات ، و بتر);
}
العودة 0;
}
نتيجة لتنفيذ هذا الرمز ، سيتم إخراج الرموز المميزة التالية:
أهلاً
العالم
مثال
لاحظ أن وظيفة سترتوك_س تعدل السلسلة الأصلية عن طريق استبدال المحددات بالحرف الفارغ. إذا كنت تريد حفظ السلسلة الأصلية ، يجب عليك إنشاء نسخة منه واستخدام وظيفة سترتوك_س مع هذه النسخة.