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

  • Thread starter Thread starter James889
  • Start date Start date
  • Tags Tags
    Function Standard
Join the discussion
Registration is free. Ask a follow-up in this thread, or start your own.
1 reply · 2K views
James889
Messages
190
Reaction score
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
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: