#include <stdio.h>
#include <string.h>
int main(void) {
char str[] = “Привет мир!”;
int length = strlen(str);
printf(“Длина строки = %d.\n”,length);
return 0;
}
Результатом работы программы будет вывод на экран числа 11. Учитывая,
что первый символ имеет нулевой индекс, то можно заметить, что данная
функция считает и символ ‘\0’.
Теперь рассмотрим правила копирования строк. Допустим, объявлены две строки
char str1[] = “Это первая строка”;
char str2[] = “Это вторая строка”;
Копирование строк с помощью оператора присваивания, например, str1 = str2, приведет к тому, компилятор выдаст сообщение об ошибке. Для того чтобы выполнить копирование необходимо перебирать по порядку элементы одного массива и присваивать их другому массиву. Однако, проще выполнить нужное действие с помощью функции strcpy ().Следующий пример демонстрирует применение данной функции.
#include <stdio.h>
#include <string.h>
int main(void) {
char src[] = “Привет мир!”;
char dest[100];
strcpy(dest, src);
printf(“%s\n”,dest);
return 0;
}
В языке С имеется несколько функций, позволяющих вводить строки с клавиатуры. Самой распространенной из них является ранее рассмотренная функция scanf (), которой в качестве параметра передается ссылка на массив символов:
|
|
char str[100];
scanf(“%s”,str);
В результате выполнения этого кода, массив str будет содержать введенную пользователем последовательность символов.
Кроме функции scanf() также часто используют функцию gets (), которая в качестве аргумента принимает ссылку на массив символов:
gets (str);
Данная функция считывает символы до тех пор, пока пользователь не нажмет клавишу Enter, т.е. введет символ перевода строки ‘\n’. Затем она записывает вместо символа ‘\n’ символ ‘\0’ и передает строку вызывающей программе.
Для вывода строк на экран помимо функции printf () можно использовать также функцию puts (), которая более проста в использовании. Следующий пример демонстрирует применение данной функции.
#define DEF “Заданная строка”
char str[] = “Это первая строка”;
puts(str);
puts(DEF);
puts(&str[4]);
Результат работы следующий:
Это первая строка
Заданная строка
первая строка
Еще одной удобной функцией работы со строками является функция sprintf (). Ее действие аналогично рассмотренной ранее функции printf() с той лишь разницей, что результат вывода заносится в массив символов, а не выводится на экран монитора:
int age;
char name[100], str[100];
printf(“Введите Ваше имя: ”);
scanf(“%s”,name);
printf(“Введите Ваш возраст: ”);
scanf(“%d”,&age);
sprintf(str,”Здраствуйте %s. Ваш возраст %d лет”, name, age);
puts(str);
В результате массив str будет содержать строку «Здраствуйте … Ваш возраст…».
Анализ последнего примера показывает, что с помощью функции sprintf() можно преобразовывать числовые переменные в строковые, объединять несколько строк в одну и т.п. Есть и специальные функции для таких преобразований (таблица 3.5).
|
|
Таблица 3.5 - Функции взаимопреобразования строк и чисел
Прототип функции | Краткое описание функции |
double atof (char *str) | преобразовывает строку str в вещественное число типа double |
int atoi (char *str) | преобразовывает строку str в десятичное целое число |
long atol (char *str) | преобразовывает строку str в длинное десятичное целое число |
char *itoa (int v, char *str, int baz) | преобразовывает целое v в строку str; при изображении числа используется основание baz (от 2 до 36): для отрицательного числа и baz = 10 первый символ — минус(-) |
char *ltoa (long v, char *str, int baz) | преобразовывает длинное целое v в строку str; при изображении числа используется основание baz (от 2 до 36) |
char *ultoa (unsigned long v, char *str, int baz) | преобразовывает беззнаковое длинное целое v в строку str |