Finished 2.8
This commit is contained in:
@@ -0,0 +1,90 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* Exercise 2-5. Write the function any(s1, s2), which returns the first location in a string s1
|
||||||
|
* where any character from the string s2 occurs, or -1 if s1 contains no characters from s2.
|
||||||
|
* (The standard library function strpbrk does the same job but returns a pointer to the
|
||||||
|
* location.)
|
||||||
|
*
|
||||||
|
* Author: Kun Deng
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
|
||||||
|
// Returns the first location in a string s1 where any character from string s2
|
||||||
|
// occurrs, or -1 if s1 contains no characters from s2
|
||||||
|
int any(char *s1, char *s2);
|
||||||
|
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
char string_one[15] = "slipgunace";
|
||||||
|
char string_two[15] = "okayokayyeah";
|
||||||
|
|
||||||
|
if (argc > 3)
|
||||||
|
{
|
||||||
|
printf("Provide two arguments:\n");
|
||||||
|
printf("./program [string_one] [string_two]\n");
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
else if (argc == 3)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; argv[1][i] != '\0'; ++i)
|
||||||
|
{
|
||||||
|
string_one[i] = argv[1][i];
|
||||||
|
}
|
||||||
|
|
||||||
|
string_one[i] = '\0';
|
||||||
|
|
||||||
|
for (i = 0; argv[2][i] != '\0'; ++i)
|
||||||
|
{
|
||||||
|
string_two[i] = argv[2][i];
|
||||||
|
}
|
||||||
|
|
||||||
|
string_two[i] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("%15s%5s%15s\n", "String1", "|", "String2");
|
||||||
|
printf("%15s%5s%15s\n", string_one, "|", string_two);
|
||||||
|
|
||||||
|
// First index of String1 from a character of String2
|
||||||
|
int matching_index = any(string_one, string_two);
|
||||||
|
|
||||||
|
if (matching_index == -1)
|
||||||
|
{
|
||||||
|
printf("No matching characters from String2 found in String1\n");
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("Character %c is found in index %d of String1\n", string_one[matching_index], matching_index);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int any(char *s1, char *s2)
|
||||||
|
{
|
||||||
|
// Defaults to no matching found
|
||||||
|
int result = -1;
|
||||||
|
|
||||||
|
for (int i = 0; s2[i] != '\0'; ++i)
|
||||||
|
{
|
||||||
|
char val = s2[i];
|
||||||
|
|
||||||
|
for (int j = 0; s1[j] != '\0'; ++j)
|
||||||
|
{
|
||||||
|
if (val == s1[j])
|
||||||
|
{
|
||||||
|
result = j;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user