Finished Exercise 4-1
This commit is contained in:
Executable
+5
@@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
|
||||
|
||||
|
||||
gcc main.c kstrindex.c -I. -std=gnu99 -o a.out
|
||||
@@ -0,0 +1,34 @@
|
||||
#include <stdio.h>
|
||||
|
||||
#include "kstrindex.h"
|
||||
|
||||
|
||||
int KStrIndex_strindex(char s[], char t[])
|
||||
{
|
||||
// Defaults to negative
|
||||
int result = -1;
|
||||
int i = 0, k = 0;
|
||||
int j = 0;
|
||||
|
||||
for (i = 0; s[i] != '\0'; ++i)
|
||||
{
|
||||
for (j = i, k = 0; t[k] != '\0'; ++j, ++k)
|
||||
{
|
||||
if (s[j] != t[k])
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Found starting index of t in s. As the look continues,
|
||||
// there is a check to see if the string matches. This
|
||||
// ensures that the right-most index is found.
|
||||
if (k > 0 && t[k] == '\0')
|
||||
{
|
||||
result = i;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
#include <stdlib.h>
|
||||
|
||||
|
||||
// Returns the right most index of t found in s.
|
||||
// Returns -1 if t is not found in s.
|
||||
int KStrIndex_strindex(char s[], char t[]);
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
*
|
||||
* Exercise 4-1. Write the function strindex(s,t) which returns the position
|
||||
* of the rightmost occurrence of t in s, or -1 if there is none
|
||||
*
|
||||
* Author: Kun Deng
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <float.h>
|
||||
|
||||
#include <kstrindex.h>
|
||||
|
||||
#define ARRAY_SIZE 99900000
|
||||
|
||||
int main()
|
||||
{
|
||||
char s[] = "this is not the end, but it might as well be.The time is nigh. The end will befall all of us. The end.\0";
|
||||
char t[] = "end\0";
|
||||
|
||||
printf("Searching for string: %s\nIn: %s\n", t, s);
|
||||
|
||||
const int index = KStrIndex_strindex(s, t);
|
||||
|
||||
if (index == -1)
|
||||
{
|
||||
printf("String %s was not found\n", t);
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
printf("String: %s\n", s);
|
||||
printf("Sub String: %s\n", t);
|
||||
printf("Index %d\n", index);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user