- Allowed editors:
vi
,vim
,emacs
- All your files will be compiled on Ubuntu 14.04 LTS
- Your programs and functions will be compiled with
gcc 4.8.4
using the flags-Wall
-Werror
-Wextra
and-pedantic
- All your files should end with a new line
- A
README.md
file, at the root of the folder of the project, is mandatory - Your code should use the
Betty
style. It will be checked using betty-style.pl and betty-doc.pl - You are not allowed to use global variables
- No more than 5 functions per file
- You are allowed to use the standard library
- In the following examples, the
main.c
files are shown as examples. You can use them to test your functions, but you don’t have to push them to your repo (if you do we won’t take them into account). We will use our ownmain.c
files at compilation. Ourmain.c
files might be different from the one shown in the examples - The prototypes of all your functions should be included in your header file called
substring.h
- Don’t forget to push your header file
- All your header files should be include guarded
Write a function that finds all the possible substrings containing a list of words, within a given string.
- Prototype:
int *find_substring(char const *s, char const **words, int nb_words, int *n);
, wheres
is the string to scanwords
is the array of words all substrings must be a concatenation arrangement ofnb_words
is the number of elements in the arraywords
- n` holds the address at which to store the number of elements in the returned array.
- Your function must return an allocated array, storing each index in
s
, at which a substring was found. If no solution is found, NULL can be returned - All
words
in the array words are the same length - A valid substring of
s
is the concatenation of each word inwords
exactly once and without any intervening characters
alex@~/holbertonschool-interview_prep/substring$ cat main.c
#include <stdlib.h>
#include <stdio.h>
#include "substring.h"
int main(int ac, char const **av)
{
char const *s;
char const **words;
int nb_words;
int *indices;
int n;
int i;
if (ac < 2)
{
fprintf(stderr, "Usage: %s <string> [word [word2 ...]]\n", av[0]);
return (EXIT_FAILURE);
}
s = av[1];
words = av + 2;
nb_words = ac - 2;
indices = find_substring(s, words, nb_words, &n);
printf("Indices -> [");
for (i = 0; i < n; i++)
{
if (i)
printf(", ");
printf("%d", indices[i]);
}
printf("]\n");
return (EXIT_SUCCESS);
}
alex@~/holbertonschool-interview_prep/substring$ gcc -Wall -Wextra -Werror -pedantic main.c substring.c
alex@~/holbertonschool-interview_prep/substring$ ./a.out barfoothefoobarman foo bar
Indices -> [0, 9]
alex@~/holbertonschool-interview_prep/substring$ ./a.out wordgoodgoodgoodbestword word good best word
Indices -> []
alex@~/holbertonschool-interview_prep/substring$ ./a.out wordgoodgoodgoodbestword word good best good
Indices -> [8]
alex@~/holbertonschool-interview_prep/substring$
- GitHub repository:
holbertonschool-interview
- Directory:
substring
- File:
substring.c
,substring.h