home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.lang.c      Meh, in C you gotta define EVERYTHING      243,242 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 242,029 of 243,242   
   bart to Michael Sanders   
   Re: strspn()   
   22 Nov 25 00:04:24   
   
   From: bc@freeuk.com   
      
   On 21/11/2025 18:41, Michael Sanders wrote:   
   > So strspn, perfect for what I need!   
   >   
   > before:   
   >   
   > int ok = 1;   
   >   
   > if (strlen(colorSpec) == 4) {   
   >      for (int i = 0; i < 4; i++) {   
   >          char c = colorSpec[i];   
   >          if (c < '1' || c > '8') { ok = 0; break; }   
   >      }   
   > } else ok = 0;   
   >   
   > after:   
   >   
   > strspn() returns the length of the leading substring   
   > consisting ONLY of characters in the allowed set...   
   >   
   > if (strlen(colorSpec) != 4 && strspn(colorSpec, "12345678") = 4) FAIL;   
   >   
      
   Performance probably isn't critical in your use-case, but the solution   
   using 'strspn' was three times as slow as doing the explicit code.   
      
   (Test string was a fixed "8725" and tested 100M times.)   
      
   This is not surprising since strspn doesn't know that the substring is   
   ordered so doesn't need to test every character of the input string   
   against every every character of the substring, at least while there is   
   a match.   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca