164.98K
Category: programmingprogramming

Работа с текстом в Си. Лекция 9

1.

Работа с текстом в Си
Лекция 9
Валиханов М.М., 2016г

2.

Кодировка ASCII
(American Standard Code for Information Interchange)
Базовая таблица кодировки:
2

3.

Расширенная таблица кодировки:
3

4.

Функции ввода-вывода символов
Ввод символа с клавиатуры:
getchar()
Вывод символа на экран:
putchar()
unsigned char ch;
ch = getchar();
putchar(ch);
4

5.

getchar() и getch()
возвращают введенный символ с клавиатуры в
переменную:
getchar() – после ввода символа необходимо
подтвердить нажатием ENTER, введенный символ
на экране отображается.
getch() – при вводе символа не требует
подтверждения, введенный символ на экране не
отображается.
5

6.

unsigned char ch;
for (;;) {
...
printf("Хотите продолжить 'Y/y' ?");
ch = getchar();
if (ch == 'Y' or ch == 'y')
// if ( ch == 89 or ch == 121 )
break;
}
6

7.

Перевод курсора на следующую строку:
putchar('\n');
Для вывода любого символа необходимо
указать его код из таблицы ASCII или
символ в апострофах.
Звук – БИП:
putchar(7);
Символ – ☻:
putchar(2);
Символ – ♥:
putchar(3);
Нажать «ALT + номер кода ASCII на цифровой клавиатуре
При нажатии «ALT + 2» будет отображено «☻»
printf("%c",7);
7

8.

Представление строк
Каждая строка (текст) в СИ это массив (вектор)
ASCII-символов.
Для представления используется char или
unsigned char.
Каждая строка заканчивается спецсимволом «nul»
- '\0'- конец строки.
char txt[] = "This is text";
В этом случае
Спецсимвол '\0'
устанавливается
автоматически
8

9.

char txt[] = "This is text";
ASCII-код 084 104 105 115 032 105 115 032 116 101 120 116 000
Символ T h i s
i s
t e x t \0
9

10.

ASCII-код 084 104 105 115 032 105 115 032 116 101 120 116 000
Символ T h i s
i s
t e x t \0
char txt[100] = "This is text";
char txt[100]={084,104,105,115,032,105,
115,032,116,101,120,116, 0 };
В этом случае обязательно ставить спецсимвол 0
10

11.

char txt[100] = "This is text";
Вывод на экран строки
puts(txt);
printf("%s", txt);
Ввод строки с клавиатуры
gets(txt);
scanf("%s", &txt);
11

12.

Вычисление длины строки
strlen(s) – определяет длину строки s, от
начала до спецсимвола '\0'
char s[100] = "This is text";
int len = strlen(s); //len=12
12

13.

Объединение двух строк
strcat(s1, s2) – добавляет строку s2 к s1. Строка
s2 остается без изменения. Размер строк не
контролируется!
strncat(s1, s2, n) – добавляет n-символов s2 в s1.
char s1[100] = "This is text";
//s1 = This is text\0
char s2[100] = " for me";
strcat(s1,s2);
//s1 = This is text for me\0
strcat(s1," and for you")
//s1 = This is text for me and for you\0
13
s2 может быть как переменной, так и текстом в
кавычках.

14.

Сравнение двух строк
strcmp(s1, s2) – посимвольное сравнение
содержания двух строк s1 и s2.
Функция возвращает:
0, если строки одинаковые;
<0, если отличающийся код символа s1 меньше s2;
>0, если s2 меньше s1.
Строка
ASCII символ
Код
s1
s2
T h i s
T h u s
084 104 105 115 084 104 117 115
strncmp(s1, s2,n) – посимвольное сравнение n символов
14

15.

Поиск информации s2 в строке s1
char *s3 = strstr(s1, s2);
возвращает указатель на первый символ, где
информация s2 встречается в строке s1
char s1[100] = "This is text";
char *s2 = strstr(s1," is");
printf("%s",s2); // is text
Копирование строк
strcpy(s1,s2) – копирование строки s2 в строку s1
strncpy(s1,s2,n) – копирование n символов s2 в
строку s1
15

16.

Преобразование чисел в строку – stdlib.h
itoa – integer to ascii – перевод целого числа в строку.
itoa(число, строка, основание)
char s[100];
int n=31;
itoa(n,s,10); //s = 31
itoa(n,s,16); //s = 1F
itoa(n,s,2 ); //s = 11111
atoi – преобразование десятичного целого из символьного в
числовой вид:
int atoi(строка)
16
char s[100]="100";
int n = atoi(s); //n=100

17.

Преобразование чисел в строку – stdlib.h
atof() – переводит вещественное из символьного
в числовой вид
double atof(строка)
char s[] = "100.1"; //можно 1.001e2
double
f = atof(s);//f=100.09(9)
17

18.

Формирование строки
sprintf() – функция аналогична printf, но
информация помещается в строку, а не на экран
char s[100];
sprintf(s,"%05d %3.1f",5, 7.21211);
//s="00005 7.2"
Форматное сканирование строки
sscanf() – аналогична scanf(), только для строк
char s[100] = "00005 7.2";
int a; float b;
sscanf(s,"%d %f",&a, &b);
18
English     Русский Rules