Обязательное использование функции, которая возвращает длину строки.
Напишите функцию, которая получает две цепочки символов (n1, n2). Функция функции заключается в проверке, является ли строка n2 подпиской на строку n1. Функция возвращает индекс первого вхождения строки n2 в строку n1 (если n2 - строка n1) или -1 (если n2 не является строкой n1). Предположение: надпись n2 короче, чем надпись n1.
Пример: надпись n1: «Компьютер» надпись n2: «er» Функция возвращает: 6
Я сделал это, и это работает
#include <stdio.h>
#define LIMIT 50
char * string_in(char *string, char *substring);
char * get(char *string, int n);
int main(void)
{
// test string_in()
char string[LIMIT];
char substring[LIMIT];
char *substr_loc;
printf("Enter a string: ");
get(string, LIMIT);
while (string[0] != '\0')
{
printf("Enter a substring to look for: ");
get(substring, LIMIT);
substr_loc = string_in(string, substring);
if (substr_loc == NULL)
printf("%s not in %s\n", substring, string);
else
printf("%s found in %s at index %lu\n",
substring, string, substr_loc - string);
printf("Enter a string (empty line to quit): ");
get(string, LIMIT);
}
puts("Bye");
return 0;
}
char * string_in(char *string, char *substring)
{
// checks if substring is in string
// returns pointer to first location of substring
// in string or NULL if substring not in string
int i;
while (*string != '\0')
{
i = 0;
// check for substring at current location
while (*(string + i) == *(substring + i))
{
i++;
// if next char in substring is null, then match
// is found. return current location
if (*(substring + i) == '\0')
return string;
}
string++;
}
// no match
return NULL;
}
char * get(char *string, int n)
{
// wrapper for fgets that replaces first newline with null
char *return_value = fgets(string, n, stdin);
while (*string != '\0')
{
if (*string == '\n')
{
*string = '\0';
break;
}
string++;
}
return return_value;
}
следующий шаг
Напишите часть программы, которая заменит все вхождения строки n2 в строке n1 на строку (символ '*'). Используйте функцию из заданной точки. Подскажите пожалуйста, как написать эту функцию
Пример: n1: «Очки» n2: «c» строка n1 после изменения. "Spe*ta*le"
void function(char * get, char * string_in)
int i = 0;
for ( i = 0; get[i]=!'\0';i++){
if (get[i] == string_in[o]
get[i] = '*';}
не работает; <</p>