Hi all,
Right now I'm using this but it seems to be a hack:
if (prefix(arg, "mark=")) {
for (markid = strtok(args,"="); markid; markid=strtok((char *)NULL, "=")) {
basically the user passes "mark=ny" to the command. I want to be able to extract "ny" from that... (7 Replies)
can any help me out y dis program is giving me a segmentation fault.....
#include<stdio.h>
#include<string.h>
int main()
{
char *str="Tanvir/home/root/hello";
const char *d ="/";
char *ret;
ret=strtok(str,d);
if(ret==NULL)
printf("NULL NULL");
else
... (3 Replies)
Hi,
I just wrote a program in C to split a comma seperated string in to group of strings using strtok() function. The code is:
int main()
{
char *temp;//not used here but basically we extract one string after another using strtok() and assign to a string pointer defined like this.
... (3 Replies)
Hi,
i want to write a script that executes a program (exec?) .
this program then requires a filename as input.
how do i give it this input in the script so the program will be complete run and close by the script.
e.g.
exec prog.exe
program then asks for filename
"enter filename:"... (1 Reply)
Why is line (null) after the first while loop run? (keyword does jump to the next word.)
#include <ftw.h>
#include <stdio.h>
#include <string.h>
char filenames = "";
int list(const char *name, const struct stat *status, int type)
{
if( (type == FTW_F) && strstr(name, ".txt") &&... (3 Replies)
I wrote a simple program that generates a random word 10,000,000 times.
I wrote it in python, then in C++ and compared the two completion times. The python script was faster! Is that normal? Why would the python script be faster? I was under the impression that C++ was faster. What are some of... (2 Replies)
Long story short: I'm working inside of a Unix SSH under a bash shell. I have to code a C program that generates a random number. Then I have to call the compiled C program with a Perl program to run the C program 20 times and put all the generated random #s into a text file, then print that text... (1 Reply)
I created a program, so a kid can practice there math on it. It dispenses varies math problems and the kid must input an answer. I also want it to grade the work they have done, but I can't find the best place for it to print out the grade.
I have:
if ( $response =~ m/^/ ) {
$user_wants_to_quit... (1 Reply)
Discussion started by: germany1517
1 Replies
LEARN ABOUT LINUX
strtok
STRTOK(3) Linux Programmer's Manual STRTOK(3)NAME
strtok, strtok_r - extract tokens from strings
SYNOPSIS
#include <string.h>
char *strtok(char *str, const char *delim);
char *strtok_r(char *str, const char *delim, char **saveptr);
Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
strtok_r(): _SVID_SOURCE || _BSD_SOURCE || _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _POSIX_SOURCE
DESCRIPTION
The strtok() function parses a string into a sequence of tokens. On the first call to strtok() the string to be parsed should be specified
in str. In each subsequent call that should parse the same string, str should be NULL.
The delim argument specifies a set of characters that delimit the tokens in the parsed string. The caller may specify different strings in
delim in successive calls that parse the same string.
Each call to strtok() returns a pointer to a null-terminated string containing the next token. This string does not include the delimiting
character. If no more tokens are found, strtok() returns NULL.
A sequence of two or more contiguous delimiter characters in the parsed string is considered to be a single delimiter. Delimiter charac-
ters at the start or end of the string are ignored. Put another way: the tokens returned by strtok() are always nonempty strings.
The strtok_r() function is a reentrant version strtok(). The saveptr argument is a pointer to a char * variable that is used internally by
strtok_r() in order to maintain context between successive calls that parse the same string.
On the first call to strtok_r(), str should point to the string to be parsed, and the value of saveptr is ignored. In subsequent calls,
str should be NULL, and saveptr should be unchanged since the previous call.
Different strings may be parsed concurrently using sequences of calls to strtok_r() that specify different saveptr arguments.
RETURN VALUE
The strtok() and strtok_r() functions return a pointer to the next token, or NULL if there are no more tokens.
CONFORMING TO
strtok()
SVr4, POSIX.1-2001, 4.3BSD, C89, C99.
strtok_r()
POSIX.1-2001.
BUGS
Be cautious when using these functions. If you do use them, note that:
* These functions modify their first argument.
* These functions cannot be used on constant strings.
* The identity of the delimiting character is lost.
* The strtok() function uses a static buffer while parsing, so it's not thread safe. Use strtok_r() if this matters to you.
EXAMPLE
The program below uses nested loops that employ strtok_r() to break a string into a two-level hierarchy of tokens. The first command-line
argument specifies the string to be parsed. The second argument specifies the delimiter character(s) to be used to separate that string
into "major" tokens. The third argument specifies the delimiter character(s) to be used to separate the "major" tokens into subtokens.
An example of the output produced by this program is the following:
$ ./a.out 'a/bbb///cc;xxx:yyy:' ':;' '/'
1: a/bbb///cc
--> a
--> bbb
--> cc
2: xxx
--> xxx
3: yyy
--> yyy
Program source
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int
main(int argc, char *argv[])
{
char *str1, *str2, *token, *subtoken;
char *saveptr1, *saveptr2;
int j;
if (argc != 4) {
fprintf(stderr, "Usage: %s string delim subdelim
",
argv[0]);
exit(EXIT_FAILURE);
}
for (j = 1, str1 = argv[1]; ; j++, str1 = NULL) {
token = strtok_r(str1, argv[2], &saveptr1);
if (token == NULL)
break;
printf("%d: %s
", j, token);
for (str2 = token; ; str2 = NULL) {
subtoken = strtok_r(str2, argv[3], &saveptr2);
if (subtoken == NULL)
break;
printf(" --> %s
", subtoken);
}
}
exit(EXIT_SUCCESS);
} /* main */
SEE ALSO index(3), memchr(3), rindex(3), strchr(3), string(3), strpbrk(3), strsep(3), strspn(3), strstr(3), wcstok(3)COLOPHON
This page is part of release 3.27 of the Linux man-pages project. A description of the project, and information about reporting bugs, can
be found at http://www.kernel.org/doc/man-pages/.
GNU 2010-09-20 STRTOK(3)