Написать функцию, которая ищет символ одной строки, отсутствующий в другой - C (СИ)
Формулировка задачи:
Написать функцию, которая ищет символ одной строки, отсутствующий в другой (char *strspn(char *s1, char *s2).
Надо использовать подпрограммы и указатели,Помогите решить,Сам пробывал прога не запускается.
Программа нужна на языке С.
#include<stdio.h>
#include<conio.h>
#define max 10
char *strspn(char *s1, char *s2)
{ char str3[max];
int i=0;
while(*s2!='\0') {if(*s1!=*s2) (*s2)++ ;
else {str3[i]=(*s2);i++;}}
return *str3;
}
main()
{ char str1[80];
char str2[80];
char str3[80];
puts("Vvedite stroki:\n");
gets(str1);
gets(str2);
puts("Rezultat:\n");
printf(" %s",*strspn(str1,str2));
getch();
}Решение задачи: «Написать функцию, которая ищет символ одной строки, отсутствующий в другой»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
/*
ищет символ одной строки, отсутствующий в другой
*/
/* findExclusive возвращает указатель на первый символ строки a, которого нет в строке b. Если таких нет, вернёт NULL */
char *findExclusive(const char *a, const char *b){
if ( !a || !*a || !b || !*b )
return NULL;
for ( ; *a; a++ )
if ( !strchr(b, (unsigned int)*a) )
return (char*)a;
return NULL;
}
int main(void){
char str1[BUFSIZ], str2[BUFSIZ], *p;
printf("First string: ");
if ( !fgets(str1, BUFSIZ, stdin) )
return 1;
printf("Second string: ");
if ( !fgets(str2, BUFSIZ, stdin) )
return 1;
printf("Exclusive symbols in first string:\n");
for ( p = findExclusive(str1, str2); p != NULL; p = findExclusive(p + 1, str2) )
printf("%c ", *p);
printf("\n");
return 0;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Функция findExclusive принимает две константные строки и возвращает указатель на первый символ строки a, которого нет в строке b. Если таких нет, возвращает NULL
- В функции main считываем две строки с помощью функции fgets
- Выводим первую строку
- Инициализируем цикл, который будет искать отсутствующие символы в первой строке второй строки
- Если найден символ, выводим его и продолжаем поиск следующего символа
- Если поиск завершен, выводим результат