03-12-2013
Quote:
Originally Posted by
DGPickett
Never a fan of strtok() or *scanf myself, debugging too many core dumps, I guess, especially in C++ (stateful subroutines in OO, ooooh!).
It definitely has its flaws. Doing further editing on the string after it's tokenized is a bad idea. It's not re-entrant. And other such gripes.
But seeing your description of how you'd do it, particularly the 'set it to null', that's
exactly what strtok does, to the letter. I don't see what makes your way better -- bigger program, slower program, bigger chance for bugs.
Same goes for sscanf. It makes some really complicated problems simple, and vice versa.
If the problem wasn't this simple though, I certainly wouldn't have used those.
Last edited by Corona688; 03-12-2013 at 03:43 PM..
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
I want to read only one column in "|" delimited file and write that column to a new file.
For Ex:
Input File
1|abc|324|tt
2|efd|11|cbcb
3||1|fg
4|ert|23|88
Output : I want to read column 3 in diff file.
324
11
1
88
Can anyone give me inputs on this ? (2 Replies)
Discussion started by: net
2 Replies
2. Shell Programming and Scripting
hello,
I will would be grateful if anyone can help me reply to my post
extract multiple cloumns from multiple files; skip rows and include filenames; awk
Please see this thread.
Thanks
manishabh (0 Replies)
Discussion started by: manishabh
0 Replies
3. Web Development
Say I have two tables like below..
status
HId sName dName StartTime EndTime
1 E E 9:10 10:10
2 E F 9:15 10:15
3 G H 9:17 10:00
logic
Id devName capacity free Line
1 E 123 34 1
2 E 345 ... (3 Replies)
Discussion started by: ilan
3 Replies
4. Shell Programming and Scripting
Hi fellas,
I have two files such as:
File 1
interacao,AspAsp,AspCys,CysAsp,CysCys,classe
File 2
interacao,AspAsp,CysAsp,AspCys,CysCys,classe
beta_alfa, DA, CA, DD, CD,ppi
Thus, I want to make a File 3 using the File 1 as model:
e.g.
File 3... (2 Replies)
Discussion started by: valente
2 Replies
5. Shell Programming and Scripting
Hi,
Input
7488 7389 chr1.fa chr1.fa
3546 9887 chr5.fa chr9.fa
7387 7898 chrX.fa chr3.fa
7488 7389 chr21.fa chr3.fa
7488 7389 chr1.fa chr1.fa
3546 9887 chr9.fa chr5.fa
7898 7387 chrX.fa chr3.fa
Desired Output
7488 7389 chr1.fa chr1.fa 2
3546 9887 chr5.fa chr9.fa 2... (2 Replies)
Discussion started by: jacobs.smith
2 Replies
6. Shell Programming and Scripting
Hi,
input file1
abcd 123 198 xyz1:0909090-0909091
ghij 234 999 xyz2:987654:987655
kilo 7890 7990 xyz3:12345-12357
prem 9 112 xyz5:97-1134
input file2
abcd 123 198 xyz1:0909090-0909091 -9.122 0
abed 88 98 xyz1:98989-090808 -1.234 1.345
ghij 234 999 xyz2:987654:987655 -10.87090909 5... (5 Replies)
Discussion started by: jacobs.smith
5 Replies
7. Shell Programming and Scripting
Hello,
I would like to ask for help with csh script.
An example of an input in .txt file is below, the number of lines varies from file to file and I have 2 or 3 columns with values. I would like to read all the values (probably one by one) and set them to independent unique variables that... (7 Replies)
Discussion started by: FMMOLA
7 Replies
8. Shell Programming and Scripting
Hi, all.
How can I split all columns into multiple columns separated by tab?
Input:
qq ee TT 12 m1
aa gg GG 34 2u
zz dd hh 56 4h
ww cc JJ 78 5y
ss ff kk 90 j8
xx pp mm 13 p0
Output:
q q e e T T 1 2 m 1
a a g g G G 3 4 2 u
z z d d h h 5 6 4 h
w w c c J J 7 8 5 y (8 Replies)
Discussion started by: huiyee1
8 Replies
9. Shell Programming and Scripting
Hello Gurus,
I have a multiple pipe separated files which have records going over multiple Lines. End of line separator is \n and records going over multiple lines have <CR> as separator. below is example from one file.
1|ABC DEF|100|10
2|PQ
RS
T|200|20
3| UVWXYZ|300|30
4| GHIJKL|400|40... (7 Replies)
Discussion started by: dJHa
7 Replies
10. Shell Programming and Scripting
Hello,
Please help in how to read rows and columns using array and print them.
I have below output and i want to store this in array and print the required rows or columns.
aaaaaaa 123
bbbbbb 456
ccccccc 888
Use code tags, thanks. (1 Reply)
Discussion started by: Cva2568
1 Replies
LEARN ABOUT NETBSD
strtok_r
STRTOK(3) BSD Library Functions Manual STRTOK(3)
NAME
strtok, strtok_r -- string tokens
LIBRARY
Standard C Library (libc, -lc)
SYNOPSIS
#include <string.h>
char *
strtok(char * restrict str, const char * restrict sep);
char *
strtok_r(char *str, const char *sep, char **lasts);
DESCRIPTION
The strtok() function is used to isolate sequential tokens in a nul-terminated string, str. These tokens are separated in the string by at
least one of the characters in sep. The first time that strtok() is called, str should be specified; subsequent calls, wishing to obtain
further tokens from the same string, should pass a null pointer instead. The separator string, sep, must be supplied each time, and may
change between calls.
The strtok() function returns a pointer to the beginning of each subsequent token in the string, after replacing the separator character
itself with a NUL character. Separator characters at the beginning of the string or at the continuation point are skipped so that zero
length tokens are not returned. When no more tokens remain, a null pointer is returned.
The strtok_r() function implements the functionality of strtok() but is passed an additional argument, lasts, which points to a user-provided
pointer which is used by strtok_r() to store state which needs to be kept between calls to scan the same string; unlike strtok(), it is not
necessary to limit tokenizing to a single string at a time when using strtok_r().
EXAMPLES
The following will construct an array of pointers to each individual word in the string s:
#define MAXTOKENS 128
char s[512], *p, *tokens[MAXTOKENS];
char *last;
int i = 0;
snprintf(s, sizeof(s), "cat dog horse cow");
for ((p = strtok_r(s, " ", &last)); p;
(p = strtok_r(NULL, " ", &last)), i++) {
if (i < MAXTOKENS - 1)
tokens[i] = p;
}
tokens[i] = NULL;
That is, tokens[0] will point to "cat", tokens[1] will point to "dog", tokens[2] will point to "horse", and tokens[3] will point to "cow".
SEE ALSO
index(3), memchr(3), rindex(3), strchr(3), strcspn(3), strpbrk(3), strrchr(3), strsep(3), strspn(3), strstr(3)
STANDARDS
The strtok() function conforms to ANSI X3.159-1989 (``ANSI C89''). The strtok_r() function conforms to IEEE Std 1003.1c-1995 (``POSIX.1'').
BUGS
The System V strtok(), if handed a string containing only delimiter characters, will not alter the next starting point, so that a call to
strtok() with a different (or empty) delimiter string may return a non-NULL value. Since this implementation always alters the next starting
point, such a sequence of calls would always return NULL.
BSD
August 11, 2002 BSD