Написать функцию, которая возвращает 1, если строка str1 расположена в конце строки str2 - C (СИ)
Формулировка задачи:
Написать и протестировать функцию STREND(str1, str2), которая возвращает 1, если строка str1 расположена в конце строки str2, и 0 - в противном случае.
Начал писать (пока без функции), но чтот оно не хочет правильно работать.
Суть в том, чтоб проверить 1 строку и 2 строку с конца на совпадения...
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
void main()
{
int dlin1str;
int dlin2str;
int j=0;
int i;
// char str1[50];
// char str2[100];
// gets(str1);
// gets(str2);
// puts(str1);
// puts(str2);
char str1[]="CTPOKA";
char str2[]="String2. CTPOKA";
dlin2str=strlen(str2);
dlin1str=strlen(str1);
j=dlin1str;
printf("%d %d\n",dlin1str,dlin2str);
for(i=dlin2str;i>=0;i--)
{
if(str2[i]==str1[j])
{
printf("%c %c Ok!\n",str1[i],str2[j]);
}
j--;
}
}Решение задачи: «Написать функцию, которая возвращает 1, если строка str1 расположена в конце строки str2»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
// возвращает 1, если строка bigStr заканчивается строкой shortStr
int strend(const char * bigStr, const char * shortStr){
int bigLen, shortLen;
return ( bigStr && shortStr && ( bigLen = strlen(bigStr) ) >= ( shortLen = strlen(shortStr) ) )
? ! ( strcmp(bigStr + bigLen - shortLen, shortStr) ) : 0;
}
int main(void){
char bigStr[BUFSIZ], shortStr[BUFSIZ];
while ( printf("Big string: ") && scanf("%[^\n]%*c", bigStr) == 1
&& printf("Short string: ") && scanf("%[^\n]%*c", shortStr) == 1 )
printf("Big string %sends with short string.\n", ( strend(bigStr, shortStr) ) ? "" : "not ");
return 0;
}