Умова завдання

Скласти функцію, яка замінює в рядку символів першу букву кожного слова великою літерою, якщо вона є рядковою. Функція відображує кількість зроблених змін на екран користувачеві.

1.3.2. Опис методу рішення

Бібліотека обробки рядків в MS Visual Studio забезпечує багато корисних функцій для роботи із строковими даними, наприклад, порівняння рядків, пошук в рядках символів і інших підрядків, розмітку рядків (розподіл рядків на логічні шматки) і визначення довжини рядка.

Якщо функція повинна приймати аргументи, то в її оголошенні слід декларувати параметри, які набудуть значень цих аргументів. Як видно з оголошення наступної функції, оголошення параметрів стоять після імені функції.

Приклад 1:

/* /* Повертає 1, якщо символ c входить в рядок s;

і 0 інакше. */

int is_in(char *s, char c)

{

while(*s)

if(*s==c) return 1;

else s++;

return 0;

}

Функція is_in() має два параметри: s і d. Якщо символ c входить в рядок s, то ця функція повертає 1, інакше вона повертає 0.

Хоча параметри виконують спеціальне завдання, - набувають значень аргументів, що передаються функції, - вони все одно поводяться так, як і інші локальні змінні. Формальним параметрам функції, наприклад, можна привласнювати які-небудь значення або використовувати ці параметри в яких-небудь виразах.

Виклики за значенням і по посиланню:у мовах програмування є два способи передачі значень підпрограмі. Перший з них - виклик за значенням. При його застосуванні у формальний параметр підпрограми копіюється значення аргументу. У такому разі зміни параметра на аргумент не впливають.

Другим способом передачі аргументів підпрограмі являється виклик по посиланню. При його застосуванні в параметр копіюється адреса аргументу. Це означає, що, на відміну від виклику за значенням, зміни значення параметра призводять до таких самих змін значення аргументу. За невеликою кількістю виключень, в мові Сі для передачі аргументів використовується виклик за значенням. Зазвичай це означає, що код, що знаходиться усередині функції, не може змінювати значень аргументів, які використовувалися при виклику функції.

Виклик функцій за допомогою масивів:коли в якості аргументу функції використовується масив, то функції передається його адреса. У цьому і полягає виключення по відношенню до правила, яке свідчить, що при передачі параметрів використовується виклик за значенням. У разі передачі масиву функції її внутрішній код працює з реальним вмістом цього масиву і цілком може змінити цей вміст. Але ця программа не працює із символами кирилиці.

Приклад 2:

printf("Введіть рядок символів : ");

gets(s);

print_upper(s);

printf("\ns тепер на верхньому регістрі: %s", s);

return 0;

}

 

/* /* Друкувати рядок на верхньому регістрі. */

void print_upper(char *string)

{

register int t;

 

for(t=0; string[t]; ++t) {

string[t] = toupper(string[t]);

putchar(string[t]);

}

}

Ось що буде виведене у разі фрази "This is a test":

Введіть рядок символів : This is a test.

THIS IS A TEST.

s тепер у верхньому регістрі: THIS IS A TEST.