Advertisement
Guest User

lol

a guest
Feb 22nd, 2020
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.54 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. /*3 лаба*/
  4.  
  5. //возвращает одну, считанную с консоли, строку
  6. char *readLine(){
  7. char *s = malloc(999);
  8. s[0]='\0';
  9. char mem;
  10. scanf("%c",&mem);
  11. for(int i=0;mem!='\n';i++){
  12. s[i]=mem;
  13. s[i+1]='\0';
  14. scanf("%c",&mem);
  15. }
  16. return s;
  17. }
  18.  
  19. ///Важно. Первый элемент возвращаемого массива это количество элементов!!!
  20. int *SearchPodstr(char *s1/*строка*/,char *s2/*подстрока*/){
  21. int* mass = NULL;
  22. int len=0;
  23. mass=(int*)realloc(mass,((len+1)*sizeof(int)));
  24. mass[0]=len;
  25. int memInd=0;/*запоминаем индекс с первым совпадением*/
  26. int mem=0;/*Типо идём по подстроке*/
  27. for(int i=0;s1[i]!='\0';i++){
  28. //printf("=%c= =%c=\n",s1[i],s2[mem]);
  29. if(s1[i] == s2[mem]){
  30. if(mem==0){
  31. memInd=i;
  32. }
  33. if(s2[mem+1]=='\0'){
  34. len++;
  35. mass=(int*)realloc(mass,((len+1)*sizeof(int)));
  36. mass[0]=len;
  37. printf("\n%d",memInd);
  38. mass[len]=memInd;
  39. mem=0;
  40. memInd=0;
  41. }else{
  42. mem++;
  43. }
  44. }else{
  45. mem=0;
  46. memInd=0;
  47. }
  48. }
  49. return mass;
  50. }
  51.  
  52. int main()
  53. {
  54. char* s=readLine();
  55. char s2[]=" ";
  56. *SearchPodstr(s,s2);
  57. return 0;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement