Читайте также: |
|
Жолдарды өңдеу кітапханасы. Жолдарды өңдеу кітапханасы жолдарды анықтау және жолдарды лексемаларға бөлу үшін, символдарды және басқа жолдарды іздеу үшін, жолдарды салыстыру үшін, жолдық мәліметтерге қолданылатын операцияларды орындау үшін көптеген пайдалы функцияларды ұсынады. Жолдарды өңдеу кітапханасымен жұмыс істеу үшін <string.h> тақырыптық файлын қосу қажет. Кестеде бұл функциялардың тізімі келтірілген.
9.4-кесте. Жолдарды өңдеу кітапханасындағы функциялар
Прототип | Функциялардың баяндалуы |
char *strcpy(char *s1, const char *s2); | s2 қатарын s1 қатарына көшіреді. s1 мәнін қайтарады. s2 қатарының құрамын сыйдыру үшін s1 қатарының жеткілікті өлшемін бар деп жорамалдайды. |
char *strncpy(char *s1, const char *s2, size_t n); | s1 қатарына s2 қатарынан n-нан көп емес символдарды көшіреді. s1 мәнін қайтарады.. |
char *strcat(char *s1, const char *s2); | s1 қатарын s2 қатарымен біріктіреді. s1 қатарының NULL символын s2 қатарының бірінші символына көшіреді. s1 мәнін қайтарады.. |
char *strncat(char *s1, const char *s2, size_t n); | s1 қатарымен s2 қатарының n-нан көп емес символдардын біріктіреді. s1 қатарының NULL символын s2 қатарының бірінші символына көшіреді.s1 мәнін қайтарады. |
Жолдарды өңдеу кітапханасындағы жолдарды салыстыру функциялары. Кестеде функциялардың прототиптері мен әрқайсысының қысқаша баяндалуы келтірілген.
9.5-кесте. Салыстыру функциялары
Прототип | Функциялардың баяндалуы |
int strcmp(const char *sl, const char *s2); | sl қатарын s2 қатарымен салыстырады. Функция 0-ді, 0-ден кіші немесе нөлден үлкен мәнді қайтарады, егер sl сәйкесінше s2-ге тең, кіші немесе үлкен болса.. |
int stricmp(const char *sl, const char *s2); | Төмеңгі және жоғарғы регистрлердегі символдардың арасындағы ерекшеліктерді ескермей-ақ s1 қатарын s2 қатарымен салыстырады. Функция 0-ді, 0-ден кіші немесе нөлден үлкен мәнді қайтарады, егер sl сәйкесінше s2-ге тең, кіші немесе үлкен болса. |
int strncmp(const char *sl, const char *s2, size_t n); | s1 қатарының n-ге дейіңгі символдарын s2 қатарымен салыстырады. Функция 0-ді, 0-ден кіші немесе нөлден үлкен мәнді қайтарады, егер sl сәйкесінше s2-ге тең, кіші немесе үлкен болса. |
int strnicmp(const char *sl, const char *s2, size_t n); | Төмеңгі және жоғарғы регистрлердегі символдардың арасындағы ерекшеліктерді ескермей-ақ s1 қатарының n-ге дейіңгі символдарын s2 қатарымен салыстырады. Функция 0-ді, 0-ден кіші немесе нөлден үлкен мәнді қайтарады, егер sl сәйкесінше s2-ге тең, кіші немесе үлкен болса. |
Жолдарды өңдеу кітапханасындағы іздеу функциялары. Кестеде функциялардың прототиптері мен әрқайсысының қысқаша баяндалуы келтірілген.
9.6 –кесте. Іздеу функциялары
Прототип | Функциялардың баяндалуы |
char *strchr(const char *s, int c) | S қатарындағы с символдың біріншіші кірісіндегі позициясын анықтайды. Егер с табылса, онда функция s қатардағы с -ке көрсеткішті қайтарады. Қарсы жағдайда NULL мәнді көрсеткіш қайтарылады. |
char *strrchr(const char *s, int c) | S қатарындағы с символдың соңғы кірісіндегі позициясын анықтайды. Егер с табылса, онда функция s қатардағы с -ке көрсеткішті қайтарады. Қарсы жағдайда NULL мәнді көрсеткіш қайтарылады. |
size_t strspn(const char *s1, const char *s2) | S2 қатарына кіретін символдардан тұратын s1 қатарының бастапқы сегментінің ұзындығын қайтарады және анықтайды. |
size_t strcspn(const char *s1, const char *s2) | S2 қатарына кірмейтін символдардан тұратын s1 қатарының бастапқы сегментінің ұзындығын қайтарады және анықтайды. |
char *strpbrk(const char *s1, const char *s2) | S1 қатарынан s2 қатарының кез келгегн симводарының ішінен бірінші кірісіндегі позициясын табады. Егер s2 қатарынан символ табылса, онда функция көрсеткішті s1 қатардағы сол символға қайтарады. Қарсы жағдайда NULL мәнді көрсеткіш қайтарылады. |
char *strstr(const char *s1, const char *s2) | S2 жолдың ішіндегі жолдың бірінші кірісіндегі позициясын табады. Егер қатар ішіндегі қатар табылса, онда функция көрсеткішті s1 қатардағы қатар ішіндегі жолды қайтарады. Қарсы жағдайда NULL мәнді көрсеткіш қайтарылады. |
char *strtok(char *s1, const char *s2) | Функцияның тізбектелген шақырылуы s1 қатарының s2 қатарындағы символдарға бөлінген лексемаларға (текстік қатардағы сөздер сияқты логикалық бөлімдер) ұсақтаумен орындалады. Функция бірінші рет шақырылғанда аргумент ретінде s1 қатарын алады, ал келесі шақырылуларда сол жолды ұсақтауды жалғастыру үшін бірінші аргумент ретінде NULL беріледі. Әрбір шақырылуда көрсеткіш s1 қатарының ағымды лексемасына қайтарылады. Егер функция кезекті шақырылуында қатарда лексема қалмағанын анықтаса, онда NULL қайтарылады. |
Жолдарды өңдеу кітапханасындағы басқа функциялары Кестеде жолды өңдеу кітапханасындағы басқа функиялардың прототиптері мен қысқаша баяндалуы келтірілген.
9.7-кесте.Жолдарды өңдеу кітапханасындағы басқа функциялары
Прототип | Функциялардың баяндалуы | ||
int strlen (const char *s) | S қатарының ұзындығын анықтайды. NULL символына шек қоятын символдарын табады. | ||
char *strlwr (char *s) | s қатарындағы жоғарғы регистр символдарын төмеңгі регистр символдарына түрлендіреді. Басқа символдарға тимейді. Функция көрсеткішті s қатарына қайтарады. | ||
char *strupr(char *s) | s қатарындағы төмеңгі регистр символдарын жоғарғы регистр символдарына түрлендіреді. Басқа символдарға тимейді. Функция көрсеткішті s қатарына қайтарады.. | ||
сhar *strrev(char *s) | S қатарындағы символдардың тәртібіне қатынайды және көрсеткішті s қатарына қайтарады. | ||
Төменде қатарлармен жұмыс істейтін функцияларды келтірілген Мысал 1: main() { static char l[ }=”Сведения о результатах сессии”; puts(l); flen(l, 8); puts(l); } flen (stroke, size) char *stroke; int size; { if (strlen(stroka)>size) *(stroke+size)=’\0’; } Результат: Сведения о результатах сессии Сведения | қолданатын программалардың мысалдары Мысал 3: #include <stdio.h> # define NAME “Ритчи” main() { char a[20]; puts (“Назовите автора языка Си”); gets(a); while (strcmp(a,NAME)!=0) { puts(“Ввод следующего варианта”); gets (a); } puts (“Ответ принят”); } | ||
Мысал 2: #include <stdio.h> main() { static char name[80]; static char stud[ ]= “является студентом факультета ИВТ”; puts(“Ведите ваше имя.”); gets(name); strcat (name, stud); puts (name); puts (stud); } Результат: Введите ваше имя Марат Марат является студентом факультета ИиВТ является студентом факультета ИиВТ | #include <stdio.h> #define STROKA “С Новым годом!” main() { static char *ptr=STROKA; static char res[25]; puts (ptr); puts (res); strcpy (res,ptr); puts (ptr); puts (res); } Результат: С Новым годом! С Новым годом! С Новым годом! | ||
Негізгі әдебиет: 1нег[325-355], 2нег[371-405]
Дополнительная литература: 5қос[46-51],6қос[116-126], 8қос[13-16]
Бақылау сұрақтары:
1. Қандай функциялар жолдарды өңдеу үшін қолданылады?
2. Қандай функциялар жолдарды салыстыру үшін қолданылады?
3. Қандай функциялар іздеу үшін қолданылады?
4. Қандай тақырыптық файлды жолдарды өңдеу кітапханасымен жұмыс істеу үшін қосу қажет?
5. Қандай функциялар регистрлер ді өзгерту үшін қолданылады?
Дата добавления: 2015-07-08; просмотров: 607 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Ші дәріс. Символдық жолдар және қолданылатын функциялар | | | Дәріс. Құрылымдар және мәліметтердің басқа формалары. |