[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
Re: sub string
- From: Carlos Pereira <carlos pehoe civil ist utl pt>
- To: gtk-app-devel-list gnome org
- Subject: Re: sub string
- Date: Tue, 10 Jul 2001 22:24:42 +0100
>rindex does the same thing as strrchr. Couldn't tell you if either one
>is POSIX off the top of my head. They would have the advantage over
>your approach because
>a) You don't have to know how many directories deep you are.
>b) As you pointed out, strtok is destructive to the original string,
>which you may not want.
Yes, strrchr(aux, "\"); is the best approach in this case.
This is indeed a AINSI C standard function (string.h).
Just for the fun of it, it would take a bit more
to get the full solution using strtok:
srtcpy (save_string, string);
ptr = strtok (string,"\");
do {
file = ptr;
ptr = strtok (NULL,"\");
} while (ptr != NULL);
Regarding rindex, I found it in /usr/include/string.h,
in the section below, so apparently this call is
recognized only in BSD-like systems.
Carlos
---------------/usr/include/string.h------------------
#if defined(__USE_BSD) || defined(__USE_XOPEN_EXTENDED)
/* Copy N bytes of SRC to DEST (like memmove, but args reversed). */
extern void bcopy __P ((__const __ptr_t __src, __ptr_t __dest, size_t __n));
/* Set N bytes of S to 0. */
extern void bzero __P ((__ptr_t __s, size_t __n));
/* Compare N bytes of S1 and S2 (same as memcmp). */
extern int bcmp __P ((__const __ptr_t __s1, __const __ptr_t __s2, size_t __n));
/* Find the first occurrence of C in S (same as strchr). */
extern char *index __P ((__const char *__s, int __c));
/* Find the last occurrence of C in S (same as strrchr). */
extern char *rindex __P ((__const char *__s, int __c));
/* Return the position of the first bit set in I, or 0 if none are set.
The least-significant bit is position 1, the most-significant 32. */
extern int ffs __P ((int __i));
/* Compare S1 and S2, ignoring case. */
extern int __strcasecmp __P ((__const char *__s1, __const char *__s2));
extern int strcasecmp __P ((__const char *__s1, __const char *__s2));
/* Compare no more than N chars of S1 and S2, ignoring case. */
extern int __strncasecmp __P ((__const char *__s1, __const char *__s2,
size_t __n));
extern int strncasecmp __P ((__const char *__s1, __const char *__s2,
size_t __n));
#endif /* Use BSD or X/Open Unix. */
#ifdef __USE_BSD
-------------------------/usr/include/string.h------------
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]