Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторн_робот_Ч2.doc
Скачиваний:
19
Добавлен:
03.11.2018
Размер:
2.12 Mб
Скачать

- Size _t maxlen - максимальне число символів, які копіюємо з вихідної стрічки в результуючу.

Функція аналогічна до strcat, strcpy

Приклад: /*strncpy/cpp*/

#include<stdio.h>

#include<string.h>

main ( )

{

char src[80] = “abcdefghij”;

char dst[80] = “1234567890”;

printf (“До: src = =%s dst = =%s \n”, src, dst);

puts (“Викликаємо strncpy (dst, src, 5)”);

strncpy (dst, src, 5);

printf (“Після: src = = %s dst = = %s \n”, src, dst);

return 0;

}

4.11 Функція strstr, _fstrstr - шукає стрічку (s2) в іншій стрічці (s1). Повертає адресу першого символу входження стрічки або, якщо підстрічка s2 не знайдена в стрічку s1, - повертає нуль (string.h)

Синтаксис: char *strstr (const char *s1, const char *s2);

char far *far _ fstrstr (const char far *s1, const char far *s2);

Параметри:

- const char *s1 - покажчик на стрічку, у якій відбувається пошук підстрічки, адресуємо s2.

- const char *s2 - покажчик на підстрічку, що шукається в стрічці, адресуємої s1.

Функція аналогічна до strchr, strcmp, strspn

Приклад:

/*strstr.cpp*/

#include<stdio.h>

#include<string.h>

main ()

{

char *s1= “filename.cpp”;

char *s2=”.cpp”;

printf (“s1= = %s \n”, s1 );

printf (“s2= = %s \n”, s2);

puts (“Викликаємо char *s3= strstr (s1, s2)”);

char *s3= strstr (s1, s2);

printf (“s3= = %s \n”, s3);

return 0;

}

4.12 Функція strtod - Перетворить символьне представлення числа з плаваючою крапкою, що міститься в стрічці, у його двійкове представлення типу double чи long double. У випадку успіху повертає отриманий при перетворенні результат, а у випадку помилки повертає HUGE_VAL (strtod ()) чи LHUGE _VAL помилки повертає HUGE_VAL (strtod ()) чи LHUGE _VA (stdlib.h)

Синтаксис : double strtod (const char *s, char **endptr);

long double strtold (const char *s, char ** endptr);

Параметри :

- const char *s - покажчик на стрічку, що містить символьне представлення числа з плаваючою крапкою, або в десятковій нотації (наприклад, “123.45”), або в науковій нотації (наприклад, “4.5е-3”).

- char **endptr - якщо цей параметр не дорівнює нулю, то він повинен бути рівним адресі символу, розташованого безпосередньо після останнього символу в рядку s, що бере участь у перетворенні. Цей не обов'язковий покажчик використовується при розборі стрічок, що містять кілька значень з плаваючою комою, можливо, розділених символами пробілу, комами.

Функція аналогічна до atof, printf, sprintf, strtol

Приклад:

/*strtod.cpp*/

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

main (int argc, char *argv [ ])

{

if (argc <= 1)

{

puts (“Введіть значення типу double”);

puts (“наприклад, STRTOD 3.14159”);

exit (1);

}

char *endptr;

double d = strtod (argv[1], &endptr);

printf (“Значення у двійковому представленні = = %lf \n”, d);

if (strlen (endptr)>0)

printf (“Перегляд зупинений на: %s \n”, endptr);

return 0;

}

4.13 Функція strtol - перетворить символьне представлення значення типу long у його двійкове представлення. Значення в стрічці може бути представлене в десятирічному, восьмирічному чи шістнадцятирічному вигляді, що використовує стандартні правила форматування мови С ( що діють для printf( ), scanf( ) і інших аналогічних функцій). Розпізнаються також інші основи системи числення, від 2 до 36. У випадку успіху функція повертає перетворений результат і встановлює не нульовий покажчик endptr рівним адресі, що слідує за останнім символом, що входить у символьне представлення числа. У випадку помилки функція повертає нуль і встановлює ненульовий покажчик endptr рівним s.

Синтаксис: long strtol (const char *s, char **endptr, int radix);

Параметри:

- const char *s - покажчик на стрічку, що містить, ціле значення типу long у текстовому вигляді. Ця стрічка може також містити й інші символи.

- char ** endptr - якщо цей параметр не дорівнює нулю, то він повинен бути рівним адресі символу, розташованого безпосередньо після останнього символу в стрічці s, що бере участь у перетворенні. Цей необов'язковий покажчик використовується при розбиранні рядків, що містять кілька значень типу long, можливо, поділених символами пробілу, комами і т.п.

- int radix - задає основу системи числення, яка використовується при перетворенні, і може приймати значення від 2 до 36. Наприклад, 2 – для двійкових значень, 10 – для десятеричних значень, 16 – для шістнадцятирічних значень і т.д. Літери від A до Z розпізнаються як числові символи для основ, що перевищують 10. (При основі 16 для представлення числа використовуються цифри від 0 до 9 і букви від А до F, при основі 17 – цифри від 0 до 9 і букви від А до G і т.п.) Якщо параметр radix встановлений рівним нулю, функція буде автоматично розпізнавати і перетворити числа, використовуючи стандартні правила форматування мови С, тобто десяткові числа повинні починатися з цифри, восьмеричні – із літери О, а шістнадцятирічні – із префікса Ох чи ОХ.

Функція аналогічна до atoi, atof, atol, printf, sprintf, strtoul

Приклад:

/*strtol.cpp*/

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#define RADIX O // Автоматичне розпізнавання основи

main (int argc, char *argv [ ])

{

if (argc <=1 ) {

puts (“Введіть довге ціле”);

puts (“Наприклад, STRTOD Ox96C”);

exit (1);

}

char *endptr;

long l = strtol (argv [1], &endptr, RADIX);

printf (“Двійкове представлення значення = = % ld \n”, l);

if (strlen (endptr)>0)

printf (“Сканування зупинене на: %s \n”, endptr);

return 0;

}