Написать функцию, которая возвращает 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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д