[ glupi @ 01.12.2001. 22:19 ] @
Kako bi mogao da vidim koliko ima rijeci ili brojeve u nekom fajlu.
Npr "Ovo je primjer 23 23" i da mi se ispise broj rijeci i brojeva:5
[ Vojislav Milunovic @ 01.12.2001. 23:34 ] @
Lepo. mapiraj file sa mmap() i pretreazi za svim "0x20" tj. space i to je broj reci u file.
[ glupi @ 02.12.2001. 14:52 ] @
Jel moze primjer kako bi to napravio jer mi bas nije jasno, pogledo sam u par knjiga dali ima sta o toj funkciji ali nisam naso.
[ Ivan Tanasic @ 02.12.2001. 15:38 ] @
Moj predlog:

posmatras string kao niz i kreces se kroz njega, proveravajuci dali je char = ' ' i ako jeste j=j+1

i to uradis pomocu for, for (i, duzinastringa,i++) il' tako nesto...
[ Vojislav Milunovic @ 02.12.2001. 16:02 ] @
man mmap ti daje sve sto ti treba o toj funkciji !!!!!

Code:

struct stat buf;
void * addr;
char *string;
int fd, i=0, razmak=0;
size("file_name",&buf);
fd = open("file_name",O_RDONLY);
addr = mmap(0,buf.st_size,PROT_READ,MAP_PRIVATE,fd,0);

string= (char *)addr;

for ( i = 0; i< buf.st_size; i++){
 if ( *string == 0x20 ) razmak++;
 string++;
}

[ madman @ 02.12.2001. 16:05 ] @
Samo moras da pazis, ponekad izmedju reci imas vise praznih mesta, ili tabulatore nove redove itd.
Evo ti primer koji broji kako treba samo mora da se podesi da cita iz fajla:

#include <stdio.h>

#define cIN 1 /* unutar reci */
#define cOUT 0 /* izvan reci */

main()
{
int iChar, iState;
int iNewLinesCount, iWordsCount, iCharsCount;

iState=cOUT;
iNewLinesCount=iWordsCount=iCharsCount=0;
printf("Pritisni CtrZ za kraj\n");
while( (iChar=getchar())!=EOF )
{
++iCharsCount;
if( iChar=='\n' )
++iNewLinesCount;
if( iChar==' ' || iChar=='\n' || iChar=='\t' )
iState=cOUT;
else if( iState==cOUT )
{
iState=cIN;
++iWordsCount;
}
}
printf("Linija: %d. Reci: %d. Znakova: %d \n",
iNewLinesCount, iWordsCount, iCharsCount);
}
[ madman @ 02.12.2001. 16:40 ] @
Vidim da ti treba i brojanje reci i brojeva
evo ovo reci broji zajedno sa recima i brojevima a brojeve samostalno.
Ako hoce broj reci bez brojeva samo oduzmi te dve vrednosti


#include <stdio.h>

#define cIN 1 /* unutar reci */
#define cOUT 0 /* izvan reci */

#define brojDA 1 /* jeste broj */
#define brojNE 0 /* nije broj */

main()
{
int iChar, iState, iNumber;
int iNewLinesCount, iWordsCount, iCharsCount, iBroj;

iState=cOUT;iNumber=brojNE;
iNewLinesCount=iWordsCount=iCharsCount=iBroj=0;
printf("Pritisni CtrZ za kraj\n");
while( (iChar=getchar())!=EOF )
{
++iCharsCount;
if( iChar=='\n' )
++iNewLinesCount;


if( iChar==' ' || iChar=='\n' || iChar=='\t' )
{
iState=cOUT;
if (iNumber==brojDA) ++iBroj;
iNumber=brojNE;}

else if( iState==cOUT )
{
iState=cIN;
if (iChar>='0' && iChar<='9') iNumber=brojDA; else iNumber=brojNE;
++iWordsCount;
}
}
printf("Linija: %d. Reci: %d. Znakova: %d. Brojeva:%d \n",
iNewLinesCount, iWordsCount, iCharsCount,iBroj);
}

[ Vojislav Milunovic @ 02.12.2001. 19:05 ] @
jeje dao sam mu samo prost metod kako to treba da pocne, e sad ako ne ukapira sam sta i kako to je njegov problem.