Новосибирский Государственный Университет
Опубликован: 26.08.2005 | Доступ: свободный | Студентов: 17956 / 3063 | Оценка: 4.07 / 3.55 | Длительность: 13:11:00
ISBN: 978-5-9556-0057-4
Лекция 13:

Символьные строки и функции над ними

< Лекция 12 || Лекция 13: 12345 || Лекция 14 >

strrchr - найти в строке последнее вхождение символа с.

Определение: 
char *strrchr(s,c)
char *s;
int c;

Пример 9:

#include <string.h>
#include <stdio.h>
#include <conio.h>
int main(void)
{
clrscr();
	char string[20];
	char *ptr, c = 'r';
	strcpy(string, "This is a string");
	ptr = strrchr(string, c);
	if (ptr)
		printf("The character %c is at position: %d\n", c, *ptr);
	else
		printf("The character was not found\n");
		getch();
	return 0;
}

strpbrk - найти в строке s1 любой из множества символов, входящих в строку s2.

Определение: 
char *strpbrk(s1,s2)
char *s1, *s2;

Пример 10:

#include <stdio.h>
#include <string.h>
#include <conio.h>
int main(void)
{
	clrscr();
	char *string1 = "abcdefghijklmnopqrstuvwxyz";
	char *string2 = "onm";
	int *ptr;
	ptr = strpbrk(string1, string2);
	if (ptr)
		printf("strpbrk found first character: %c\n", *ptr);
	else
		printf("strpbrk didn't find character in set\n");
	getch();
return 0;
}

strspn - определить длину отрезка строки s1, содержащего символы из множества, входящих в строку s2.

Определение: 
int strspn(s1,s2)
char *s1, *s2;

Пример 11:

#include <stdio.h>
#include <string.h>
#include <alloc.h>
#include <conio.h>
int main(void)
{
	clrscr();
	char *string1 = "1234567890";
	char *string2 = "123DC8";
	int length;
	length = strspn(string1, string2);
	printf("Character where strings differ is at position %d\n", length);
	getch();
	return 0;
}

strcspn - определить длину отрезка строки s1, не содержащего символы cтроки s2.

Определение: 
int strcspn(s1,s2)
char *s1, *s2;

Пример 12:

#include <stdio.h>
#include <string.h>
#include <alloc.h>
#include <conio.h>
int main(void)
{
	clrscr();
	char *string1 = "1234567890";
	char *string2 = "747DC8";
	int length;
	length = strcspn(string1, string2);
	printf("Character where strings intersect is at position %d\n", length);
	getch();
	return 0;
}

strtok - выделить из строки s1 лексемы, разделенные любым из множества символов, входящих в строку s2.

Определение: 	char *strtok(s1,s2) 
char *s1, *s2;

Пример 13:

#include <string.h>
#include <stdio.h>
#include <conio.h>
int main(void)
{
clrscr();
	char input[16] = "abc,d";
	char *p;
	p = strtok(input, ",");
	if (p) printf("%s\n", p);
	p = strtok(NULL, ",");
	if (p)   printf("%s\n", p);
	getch();
	return 0;
}
< Лекция 12 || Лекция 13: 12345 || Лекция 14 >
Максим Сикстус
Максим Сикстус

При выполнении кода из Лекции 11, стр.2 получается результат:

x ravno 16.
x ravno 4.
x ravno 16.
x ravno 14.
x ravno 100.
x ravno 36.

Связано ли это с утверждением, что : "Единственным исключением при замене является макроопределение, находящееся внутри двойных кавычек"?

Андрей Белоусов
Андрей Белоусов

Я изучаю лекцию 5 и в ней есть выражения:

char *pc;

pc = (char*)0777;

Я так понял что, char *pc это ссылка на переменную pc,

0777 это тип int восьмиричный. А что делает выражение:

 pc = (char*)0777;

Berkut Molodoy
Berkut Molodoy
Россия
Евгений Кузнецов
Евгений Кузнецов
Россия