Zitat von
shutdown
Wofür ist so ein String denn dann überhaupt zu gebrauchen? Eine Variable die nicht variabel ist, macht doch wenig Sinn?!
Eine Variable dient ja erstmal nur dazu um einen Wert zu halten, Konstanten können auch schon Sinn machen (z.B. wenn du eine feste Ausgabe von einer Zeichenkette hast).
Also um das Ganze zu verstehen brauche ich vielleich einfach mal ein funktionierendes Beispiel, wie müsste folgendes aussehen, um zu funktionieren:
Code:
char string1[]="String1;is;delmited;by;;\nand;has;a;newline;in;it";
char string2[32];
string2=strsep();
Wenn du mir die Zeile mal richtig hinpacken könntest, damit ich meinen String entweder nach der Newline oder den ; zerlegen kann, wäre mir wahrscheinlich echt geholfen, weil ich die Sache im moment nicht verstehe und nicht funktionsfähig hinkriege (endet entweder mit einem Kompiler-Fehler wegen falschen Pointern oder einem Segfault...)
Hast du schonmal in die Manpage zu strtok geschaut, da steht ein gutes Beispiel:
Code:
EXAMPLE
The following program 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 speci-
fies the delimiter character(s) to be used to separate that string into
"major" tokens. The third argument specifies the delimiter charac-
ter(s) to be used to separate the "major" tokens into subtokens.
#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\n",
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\n", j, token);
for (str2 = token; ; str2 = NULL) {
subtoken = strtok_r(str2, argv[3], &saveptr2);
if (subtoken == NULL)
break;
printf(" --> %s\n", subtoken);
}
}
exit(EXIT_SUCCESS);
} /* main */
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
Kannst du damit was anfangen?
Lesezeichen