Konstantin18ko
@Konstantin18ko
Стоматолог

Чего то я не понял с функциями из библиотеки string.h?

#include  <stdio.h>
#include  <string.h>

int main(){
	char string1[40];
	char string2[40];
	fgets(string1, 40, stdin);
	fgets(string2, 40, stdin);
	int i = strstr(string1, string2);
	printf("Hello World!");
	return 0;
}


Все функции из пакета возвращают число int. 0 - если ложь, или номер ячейки в адресе. Но при компиляции пишет:
Invalid conversion from 'chars*' to 'int'.
В чем причина?
  • Вопрос задан
  • 334 просмотра
Пригласить эксперта
Ответы на вопрос 3
@abcd0x00
Все функции из пакета возвращают число int.

Во-первых, string.h - это не пакет, а набор объявлений для группы функций из стандартной библиотеки функций языка C. То есть библиотека включает в себя вообще все функции, а файлы с объявлениями позволяют подключать (объявлять) их только нужными группами.

Во-вторых, не все функции для работы со строками возвращают int. Это ты сам придумал, где-то что-то перепутав. Строковые функции бывают разными - и возвращающими int, и возвращающими char *, и возвращающими size_t. Функция strstr() возвращает char * - указатель на начало найденной подстроки, либо NULL, если подстрока не найдена.

Если тебе нужно определить позицию найденной подстроки в строке, то нужно из адреса этой подстроки вычесть начало всей строки.
Ответ написан
Комментировать
ptrdiff_t i = string1 - strstr(string1, string2);
Ответ написан
@kir_vesp
Web Developer
Смотрите документацию. тык
Не скажу за все, но обычно функции из string.h возвращают null, либо указатель на ячейку. Чтобы получить номер ячейки надо брать их разность.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы