Похожие презентации:
Работа с текстом в Си. Лекция 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 в строке s1char *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.hitoa – 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.hatof() – переводит вещественное из символьного
в числовой вид
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