Δημοσιεύτηκε: 28 Μαρ 2012, 20:53
migf1 έγραψε:
Για αυτό σου έγραψα το μεσημέρι πως δεν είναι τόσο απλό να την κάνεις γενικής χρήσης. Διότι πέρα από τον κώδικα, πρέπει να βρεις/διαλέξεις/αποφασίσεις τι και ποια ορίσματα θα της περνάς, πως θα τα διαχειρίζεσαι, πως θα αντινετωπίζεις ενδεχόμενα σφάλματα και τι θα επιστρέφεις από την συνάρτηση
Πρόσθεσα και έλεγχο για το αν τα string είναι κενά:
- Μορφοποιημένος Κώδικας: Επιλογή όλων
-
#include <stdio.h>
#include <string.h>
#define MAXTOKENS 20
int s_tokenize(char *s, char *tokens[], const int ntoks, const char *delims)
{
int i;
if (! s[0] || ! delims[0])
return 0;
tokens[0] = strtok(s, delims);
for (i = 1; i < ntoks; i++) {
tokens[i] = strtok(NULL, delims);
if (! tokens[i])
break;
}
return i;
}
int main( void )
{
char s[] = "lots of character to play with";
char *tokens[MAXTOKENS] = {NULL};
int ntokens = 0;
ntokens = s_tokenize(s, tokens, MAXTOKENS, "abcd");
if (ntokens > 0)
for (int i=0; i < ntokens; i++)
puts(tokens[i]);
return 0;
}
Από εκεί και πέρα δεν ξέρω τι άλλο να ελέγξω, αλλά δεν ξέρω αν είναι και τόσο ουσιώδες να το κάνω για τώρα.
Α, πριν που έβγαζε περίεργα αποτελέσματα ήταν επειδή είχα αφήσει κατά λάθος μέσα στο loop το παρακάτω "tokens[i] = strtok(NULL, " ,.-");" το οποίο το διόρθωσα.