How can I write my own version of the C standard function strspn?

  • #1
James889
192
1
Hi,

im trying to write my own version of the C standard function strspn.

It returns the number of characters in str2 that exists in str1.

I cannot get mine to work.

Code:
#include <stdio.h>
#include <stdlib.h>

int strspn(const char *str1, const char *str2){

int n;
const char *s,*k;
s = str1;
k = str2;

while(*s++ != '\0'){
   for(; *k++ != '\0';){
     
if(*s == *k)
n++;
}
}
           
return n;                     
}

if i try it with something like strspn("1214bk","1214"), it returns 16386...
:(
 
Physics news on Phys.org
  • #2
Well, for starters you never initialize the counter n. Secondly, you need to "reset" k (i.e. make k point to str2) when s is incremented. Also, if the two strings for e.g. "asd" and "asdasd", then should strprn return 3 or 6? I.e., does it only see if the letters exist, and not how many times? In your example, it returns 6.

It could be a good exercise to implement a method, such that it only counts the number of letters occurring in both words, and not how many times (i.e. so it returns 3, and not 6).
 
Last edited:

Similar threads

Replies
2
Views
1K
Replies
3
Views
1K
Replies
21
Views
4K
Replies
24
Views
3K
Replies
8
Views
2K
Replies
7
Views
2K
Replies
3
Views
1K
Back
Top