Informatică, întrebare adresată de Mantaa, 8 ani în urmă

Poate sa-mi explice cineva va rog cum functioneaza functia strtok ?
Am putin habar in legatura cu ce face ea, dar nu inteleg cum functioneaza, adica am observat ca trebuie dat un strtok(NULL, "sir de separatori") din cand in cand, dar cand mai exact ??

Răspunsuri la întrebare

Răspuns de abcdebygabi
2
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
    char sir[255];
    cin.getline(sir,255);//un sir format din mai multe cuvinte,separate cu SPATII
    char *p;
    p=strtok(sir," ");//primul apel, in acest moment p este primul cuvant din sir;
    while(p!=NULL)//adica cat timp p este cuvant
    {    
        //prelucrari pe cuvant sau afisare
        p=strtok(NULL," ");
    }
    return 0;
}

Mantaa: De ce este nevoie sa ai p=strtok(NULL," ") ? Care e rolul instructiunii ?
abcdebygabi: Din cate am inteles eu functia pastreaza anumite date dupa primul apel, astfel incat poate reincepe de la punctul la care ramas. Daca primul parametru e NULL atunci incepe de unde a ramas, daca nu incepe din nou de la inceputul sirului.
artur99: În spate, de fapt, înlocuiește primul spațiu cu caracterul null, și returnează pointerul către începutul stringului (păstrând locația unde a înlocuit spațiul cu NULL). Apoi, când este apelat a doua oară cu (NULL, " "), caută iarăși primul spațiu, dar începând de la locația memorată, și o înlocuiește iar cu caracterul null, și returnează locația unde a înlocuit ultima dată + 1.
artur99: Demo: http://cpp.sh/5lvkw :))
abcdebygabi: multumesc :))
Alte întrebări interesante