Содержание
- 2. Строки const char c=’c’; //символ – занимает один байт, его значение не меняется char a,b;//символьные переменные,
- 3. Инициализация строк void main() { char s1[10]="string1"; int k=sizeof(s1); cout char s2[]="string2"; k=sizeof(s2); cout char s3[]={‘s’,’t’,’r’,’i’,’n’,’g’,’3’}
- 4. Занесение строк в память char*ss; - описан указатель ss=”String6”; // неправильно //память не выделяется , поэтому
- 5. Ввод-вывод строк int getchar(void) - осуществляет ввод одного символа их входного потока, при этом она возвращает
- 6. ПРИМЕРЫ ВВОДА-ВЫВОДА СТРОК 1. char s[20]; cin>>s;//ввод строки из стандартного потока cout Результат работы программы: При
- 7. Основные функции работы со строками unsigned strlen(const char*s); Вычисляет длину строки s. int strcmp(const char*s1, const
- 8. Функции преобразования и анализа строк double atof(const char* p); //преобразует переданную строку в double int atoi(const
- 9. #include #include int main(){ char s[5], passw[] = "kuku"; /* Можно - *passw = "kuku"; */
- 10. Пример 2. Удалить из строки слов, разделенных пробелами, слова, начинающиеся с цифры #include #include void main()
- 11. char src[10], dest[10]; for (int i = 0; i char *src = new char [10]; char
- 13. Скачать презентацию
Строки
const char c=’c’; //символ – занимает один байт, его значение не
Строки
const char c=’c’; //символ – занимает один байт, его значение не
char a,b;//символьные переменные, занимают по одному байту, значения меняются
const char *s=“Пример строки\n” ;//текстовая константа
Строка - массив символов, заканчивающийся нуль-символом (символ с кодом, равным 0; записывается '\0‘).
“A” – строка (2байта), ‘A’ – символ (1байт)
Библиотеки -
Ввод-вывод строк -
Инициализация строк
void main()
{
char s1[10]="string1";
int k=sizeof(s1);
cout<char s2[]="string2";
k=sizeof(s2);
cout<char s3[]={‘s’,’t’,’r’,’i’,’n’,’g’,’3’}
k=sizeof(s3);
cout<char *s4="string4";//указатель на строку, ее
Инициализация строк
void main()
{
char s1[10]="string1";
int k=sizeof(s1);
cout<
k=sizeof(s2);
cout<
k=sizeof(s3);
cout<
k=sizeof(s4);
cout<
Результаты:
string1 10 – выделено 10 байтов, в том числе под \0
string2 8 – выделено 8 байтов (7+1байт под \0)
string3 8 – выделено 8 байтов (7+1байт под \0)
string4 4 – размер указателя
Занесение строк в память
char*ss; - описан указатель
ss=”String6”; // неправильно
//память не выделяется
Занесение строк в память
char*ss; - описан указатель
ss=”String6”; // неправильно
//память не выделяется
// закончиться аварийно!!!
Правильно:
char *sss=new char[10];//выделяем динамическую память
strcpy(sss,”String7”);//копируем строку в память
char str[10] = “Student"; // выделено 10,заполнено 8 байт
char str[] = “Student"; // выделено и заполнено 8 байт
char *str = “Student” // создан указатель на константу
Ввод-вывод строк
int getchar(void) - осуществляет ввод одного символа их входного потока,
Ввод-вывод строк
int getchar(void) - осуществляет ввод одного символа их входного потока,
int putchar (int c) – помещает в стандартный выходной поток символ c.
char* gets(char*s) – считывает строку s из стандартного потока до появления символа ‘\n’, сам символ ‘\n’ в строку не заносится.
int puts(const char* s) - записывает строку в стандартный поток, добавляя в конец строки символ ‘\n’, в случае удачного завершения возвращает значение больше или равное 0 и отрицательное значение (EOF=-1) в случае ошибки.
ПРИМЕРЫ ВВОДА-ВЫВОДА СТРОК
1. char s[20];
cin>>s;//ввод строки из стандартного потока
cout<стандартный поток
Результат работы программы:
При вводе строки “123 456 789”, чтение байтов осуществляется до первого пробела, т. е. в строку s занесется только первое слово строки “123/0”, следовательно, выведется: 123.
2. char s[20];
gets(s);//ввод строки из стандартного потока
puts(s);//вывод строки в стандартный поток
Результат работы программы:
При вводе строки “123 456 789”, чтение байтов осуществляется до символа ‘\n’, т.е. в s занесется строка”123 456 789\n\0”, при выводе строки функция puts возвращает еще один символ ‘\n’, следовательно, будет выведена строка “123 456 789\n\n”.
3. char s[20];
scanf(“%s”,s);//ввод строки из стандартного потока
printf(“%s”,s);//вывод строки в стандартный поток
Результат работы программы:
При вводе строки “123 456 789”, чтение байтов осуществляется до первого пробела,т. е. в строку s занесется только первое слово строки “123/0”, следовательно, выведется: 123. Т. к. s – имя массива, т. е. адрес его первого элемента, операция & в функции scanf не используется.
ПРИМЕРЫ ВВОДА-ВЫВОДА СТРОК
1. char s[20];
cin>>s;//ввод строки из стандартного потока
cout<
Результат работы программы:
При вводе строки “123 456 789”, чтение байтов осуществляется до первого пробела, т. е. в строку s занесется только первое слово строки “123/0”, следовательно, выведется: 123.
2. char s[20];
gets(s);//ввод строки из стандартного потока
puts(s);//вывод строки в стандартный поток
Результат работы программы:
При вводе строки “123 456 789”, чтение байтов осуществляется до символа ‘\n’, т.е. в s занесется строка”123 456 789\n\0”, при выводе строки функция puts возвращает еще один символ ‘\n’, следовательно, будет выведена строка “123 456 789\n\n”.
3. char s[20];
scanf(“%s”,s);//ввод строки из стандартного потока
printf(“%s”,s);//вывод строки в стандартный поток
Результат работы программы:
При вводе строки “123 456 789”, чтение байтов осуществляется до первого пробела,т. е. в строку s занесется только первое слово строки “123/0”, следовательно, выведется: 123. Т. к. s – имя массива, т. е. адрес его первого элемента, операция & в функции scanf не используется.
Основные функции работы со строками
unsigned strlen(const char*s);
Вычисляет длину строки s.
int strcmp(const
Основные функции работы со строками
unsigned strlen(const char*s);
Вычисляет длину строки s.
int strcmp(const
Сравнивает строки s1 и s2. Если s1
int strcnmp(const char*s1, const char *s2);
Сравнивает первые n символов строк s1 и s2. Если s1
char*strcpy(char*s1, const char*s2);
Копирует символы строки s1 в строку s2.
char*strncpy(char*s1, const char*s2, int n);
Копирует n символов строки s1 в строку s2. Конец строки отбрасывается или дополняется пробелами.
char*strcat(char*s1,const char*s2);
Приписывает строку s2 к строке s1
char*strncat(char*s1, const char*s2);
Приписывает первые n символов строки s2 к строке s1
Функции преобразования и анализа строк
double atof(const char* p);
//преобразует переданную строку в
Функции преобразования и анализа строк
double atof(const char* p);
//преобразует переданную строку в
int atoi(const char* p); //преобразует переданную строку в int
long atol(const char* p); //преобразует переданную строку в long
Для работы с символами в стандартной библиотеке (заголовочные файлы
Проверка на принадлежность символа множеству:
isalnum букв и цифр (A-Z, a-z, 0-9)
isalpha букв (A-Z, a-z)
iscntrl управляющих символов (с кодами 0..31 и 127)
isdigit цифр (0-9)
isgraph Печатаемых символов, кроме пробела
islower букв нижнего регистра (a-z)
isprint Печатаемых символов
ispunct знаков пунктуации
isspace символов-разделитетей
isupper букв верхнего регистра (A-Z)
isxdigit шестнадцатеричных цифр (A-F, a-f, 0-9)
#include
#include
int main(){
char s[5], passw[] = "kuku";
/* Можно - *passw
#include
#include
int main(){
char s[5], passw[] = "kuku";
/* Можно - *passw
int i, ok = 0;
for (i = 0; !ok && i<3; i++){
printf("\nвведите пароль:\n");
gets(s); if (strcmp(s,passw)==0 ) ok=1;
}
if (ok) printf("\nпароль принят");
else printf("\nпароль не принят");
}
Пример 1. Запрос пароля не более 3 раз
Пример 2. Удалить из строки слов, разделенных пробелами, слова, начинающиеся с
Пример 2. Удалить из строки слов, разделенных пробелами, слова, начинающиеся с
#include
#include
void main()
{ char s[250], //исходная строка
w[25], //слово
mas[10][25];//массив слов
puts(“\nвведите строку”);
gets(s);
int k=0,t=0,i,len,j;
len=strlen(s);
while(t
for(j=0,i=t;s[i]!=’ ‘;i++,j++)w[j]=s[i];//формируем слово до пробела
w[j]=’/0’;//формируем конец строки
strcpy(mas[k],w);//копируем слово в массив
k++;//увеличиваем счетчик слов
t=i+1;//переходим к следующему слову в исходной строке
}
strcpy(s,””);//очищаем исходную строку
for(t=0;t
{strcat(s,mas[t]);//копируем в строку слово
strcat(s,” “);//копируем в строку пробел
}
puts(s);//выводим результат
}
char src[10], dest[10];
for (int i = 0; i <= strlen(src); i++)
char src[10], dest[10];
for (int i = 0; i <= strlen(src); i++)
char *src = new char [10];
char *dest = new char [10], *d = dest;
cin << src;
while ( *src != 0) *d++ = *src++;
*d = 0;
Пример 3. Работа с указателями на строки