[ negative7 @ 02.07.2009. 14:30 ] @
Code:

#include<stdio.h>
#include<stdlib.h>
void main()
{
    char recenica[200];

    printf("Unesite recenicu> ");
    gets(recenica);
}


problem je kako da ja pristupim pojedinoj rijeci,Konkretno zadatak,korisnik unosi recenicu proizvoljnog broja rijeci
a ja pravim matricu od rijeci u recenici.

npr recenioca: Danas je lijep i suncan dan:
ja trebam ispisat

Danas je lijep
i suncan dan

kao matrica 2x3
Nije sad bas stvar u matrici nego kako pristupoiti pojedinoj rijeci
[ Wajda.W @ 02.07.2009. 18:33 ] @
Pojedinoj reci pristupas tako sto se kreces sa for petljom kroz recenicu i poredis da li je znak razmak tj. ' ' ako jeste to je kraj reci, i od sledeceg znaka pocinje nova rec.
Malo probaj, trebalo bi da shvatis kako da dodjes do reci iz date recenice.., mrzi me sad da pisem kod...
[ djoka_l @ 02.07.2009. 23:26 ] @
Ne znam da li smeš da koristiš funkciju strtok, ali ti ona rešava izdvajanje reči (tokena) iz stringa. Proguglaj i naći ćeš opis funkcije.

[ negative7 @ 04.07.2009. 13:22 ] @
hvala,obadva savjeta su dobrodosla
[ X Files @ 04.07.2009. 16:47 ] @
Evo jedno resenje iz glave. Sigurno moze i krace i bolje, pa analiziraj po zelji.

Code:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    //char reci[] = "";
    //char reci[] = "jedna_rec";
    char reci[] = "jedan dva tri cetiri pet sest sedam osam devet deset";

    int pocetak=0, kraj=0;

    while ( reci[kraj] )
    {
        while ( ( reci[kraj] != '\0' ) && ( reci[kraj] != ' ' ) )
            ++kraj;

        // ispis pozicija indeksa(pocetak, kraj)
        printf ("(%d, %d)\n", pocetak, kraj-1);

        // ispis konkretnih slova izmedju intervala
        while ( kraj >= pocetak) { printf("%c", reci[pocetak++]); } printf("\n\n");

        pocetak = kraj+1;

        if ( reci[kraj] == ' ' )
            ++kraj;

    }
    return 0;
}
[ negative7 @ 05.07.2009. 20:59 ] @
Hvala Xfiles,medjutim pokusao sam uradit preko funkcije strok i pojavio mi se novi problem.Program radi ovako napisan:
Code:

/* strtok example */
#include <stdio.h>
#include <string.h>

int main ()
{
  char str[]="- This, a sample string.";
  char * pch;
  printf ("Splitting string \"%s\" into tokens:\n",str);
  pch = strtok (str," ,.-");
  while (pch != NULL)
  {
    printf ("%s\n",pch);
    pch = strtok (NULL, " ,.-");
  }
  return 0;
}

ako stavim char *str="- This, a sample string.";
program neradi,puca, jel mi moze netko objasnit zasto.
i zanima me jel poguce poruku ispisat u boji
npr
Code:
 
        printf("Elitesecurity");
 

plavom bojom
[ X Files @ 06.07.2009. 06:49 ] @
Program puca zbog pokušaja upisa u memoriju koja je predviđena za čitanje, jer ta notacija je zapravo inicijalizovanje pointera takozvanim "string literalom", koji je definisan kao const char.

strtok() ako se dobro sećam vrši upis NULL na kraju pronađenog tokena, pa otuda i svi problemi.


Pogledaj na netu o : c/c++ string literal
... a i mi smo jednom pričali malo o tome:
http://www.elitesecurity.org/t345926