for (int j = 1, str1 = argv[1]; ... declares two variables of type int, j and str1; the pre-existing char * str1 isn't used. This causes compiler warnings. Declaring j outside the loop fixes everything. To enable automated source extraction, separate the text following the code. Signed-off-by: Stephen Kitt <steve@xxxxxxx> --- man3/strtok.3 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/man3/strtok.3 b/man3/strtok.3 index aec914094..19d5d9204 100644 --- a/man3/strtok.3 +++ b/man3/strtok.3 @@ -255,6 +255,7 @@ 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\en", @@ -262,7 +263,7 @@ main(int argc, char *argv[]) exit(EXIT_FAILURE); } - for (int j = 1, str1 = argv[1]; ; j++, str1 = NULL) { + for (j = 1, str1 = argv[1]; ; j++, str1 = NULL) { token = strtok_r(str1, argv[2], &saveptr1); if (token == NULL) break; @@ -280,6 +281,7 @@ main(int argc, char *argv[]) } .EE .PP +.SS Further examples Another example program using .BR strtok () can be found in -- 2.30.2