Содержание
Определение строк
Строки в C фактически являются массивами строк. Хотя указатели (pointer) мы будем рассматривать позже, мы используем тут указатель на массив символов, что бы определить простую строку, например:
char * name = "John Smith";
Таким образом можно создать строку, которая будет доступна только для чтения. Если мы хотим создать строку, с которой можно выполнять различные манипуляции — необходимо определить массив символов, например:
char name[] = "John Smith";
Пустые квадратные скобки указывают компилятору автоматически подсчитать размер создаваемого массива символов. То же самое можно сделать, задав размер массива явно:
char name[] = "John Smith"; /* аналогично */ char name[11] = "John Smith";
Причина, по которой мы указываем размер в 11 символов, а не 10, это то, что 1 элемент используется для обозначения окончания строки.
Форматирование строки с помощью printf
Мы можем использовать функцию printf() для форматирования различных строк, например:
char * name = "John Smith";
int age = 27;
/* выведет на экран'John Smith is 27 years old.' */
printf("%s is %d years old.n", name, age);
Сравнение строк
Фукнция strncmp() сравнивает две строки, возвращая 0 — если они они одинаковы, и любое другое значение — если различаются. Аргументами передаются две строки, которые необходимо сравнить, и максимальная длина (кол-во символов) для сравнения. Так же есть аналогичная, но небезопасная фукнция strcmp(), но её использование не рекомендуется.
Например:
char * name = "John";
if (strncmp(name, "John", 4) == 0) {
printf("Hello, John!n");
} else {
printf("You are not John. Go away.n");
}
В примере ниже мы используем новую функцию sprintf(), которая сохраняет отформатированные строки в новую переменную:
#include <stdio.h>
int main() {
char * first_name = "John";
char last_name[] = "Doe";
char name[100];
/* testing code */
if (strncmp(first_name, "John") != 0) return 1;
if (strncmp(last_name, "Doe") != 0) return 1;
last_name[0] = 'B';
sprintf(name, "%s %s", first_name, last_name);
if (strncmp(name, "John Boe", 100) == 0) {
printf("Done!n");
}
return 0;
}
3 502 views