|
[ sucur @ 19.09.2005. 12:13 ] @
| dakle, ne znam kako da imena svih fajlova iste ekstenzije zamjenim, kao sto je to u DOS-u *.txt, dakle da recimo neotvaram svaki fajl u C++ fopen(text1.txt), fopen(textn.txt), nego da stavim, fopen(*.txt), po DOS-u, e kako ovu zvjezdicu da izvedem u C++ ? |
[ _VampiR_ @ 19.09.2005. 12:26 ] @
Ne bih rekao da je to iko do sada uspio izvesti, iako ja nisam pokusavao.
Ja to rjesavam tako sto strukturu, pomocu vezanih listi, popunim imenima datoteka one koje prodju kroz filter, pa onda preuzimam i obradjujem jednu po jednu datoteku iz strukture, sve dok ne dodjem do zadnje.
Sretno
[ danio @ 19.09.2005. 12:32 ] @
Nazalost ne da se to tako napravit koristeci sam fopen...
Mozes uciniti dve stvari. Iz DOSa mozes ukljuciti program i dat sva imena kao argument:
prog.exe *.txt
I onda ih iscitati u mainu:
for(int i=1; i<argc; i++)
fopen(argv );
Ili moras koristiti ovo.
[ sucur @ 19.09.2005. 12:43 ] @
Ovo mi je potrebno, jer hocu da otvorim sve datoteke recomo *.txt, koje se nalaze na nekoj lokaciji, znaci bez mog prethodnog znanja, koliko ima tih datoteka na toj lokaciji, bez znanja njihovih imena itd.
Za sada mogu da to da rijesim preko pretrage, tj da stavim neki char imeFajla, i da preko for petlje mijenjam slova, al' to je veoma, zamorno, pa sam mislio da ima nesto slicno onome u DOS-u, u svakom slucaju hvala.
[ Burgos @ 19.09.2005. 13:23 ] @
Pa, mislim da je jednostavnije onako kako je danio predložio:
Code: #include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int i = 0;
for (i = 1; i < argc; i++)
cout << argv[i] << endl;
}
[Ovu poruku je menjao Burgos dana 19.09.2005. u 14:23 GMT+1]
[ sucur @ 19.09.2005. 13:25 ] @
Jeste, nego ono sam imao kao ideju, prije Danio-vog posta.
[ sucur @ 19.09.2005. 17:36 ] @
Evo trazio sam malo po MSDN-u i nasao sam:
Code: // crt_find.c
/* This program uses the 32-bit _find functions to print
* a list of all files (and their attributes) with a .C extension
* in the current directory.
*/
#include <stdio.h>
#include <io.h>
#include <time.h>
int main( void )
{
struct _finddata_t c_file;
long hFile;
/* Find first .c file in current directory */
if( (hFile = _findfirst( "*.c", &c_file )) == -1L )
printf( "No *.c files in current directory!\n" );
else
{
printf( "Listing of .c files\n\n" );
printf( "\nRDO HID SYS ARC FILE DATE %25c SIZE\n", ' ' );
printf( "--- --- --- --- ---- ---- %25c ----\n", ' ' );
printf( ( c_file.attrib & _A_RDONLY ) ? " Y " : " N " );
printf( ( c_file.attrib & _A_SYSTEM ) ? " Y " : " N " );
printf( ( c_file.attrib & _A_HIDDEN ) ? " Y " : " N " );
printf( ( c_file.attrib & _A_ARCH ) ? " Y " : " N " );
printf( " %-12s %.24s %9ld\n",
c_file.name, ctime( &( c_file.time_write ) ), c_file.size );
/* Find the rest of the .c files */
while( _findnext( hFile, &c_file ) == 0 )
{
printf( ( c_file.attrib & _A_RDONLY ) ? " Y " : " N " );
printf( ( c_file.attrib & _A_SYSTEM ) ? " Y " : " N " );
printf( ( c_file.attrib & _A_HIDDEN ) ? " Y " : " N " );
printf( ( c_file.attrib & _A_ARCH ) ? " Y " : " N " );
printf( " %-12s %.24s %9ld\n",
c_file.name, ctime( &( c_file.time_write ) ), c_file.size );
}
_findclose( hFile );
}
}
Sample Output
Listing of .c files
RDO HID SYS ARC FILE DATE SIZE
--- --- --- --- ---- ---- ----
N N N Y blah.c Wed Feb 13 09:21:42 2002 1715
N N N Y test.c Wed Feb 06 14:30:44 2002 312
[ sucur @ 20.09.2005. 13:43 ] @
Jos nesto, moze li se odrediti koliko da mi brojeva ispisuje iza zareza kod float-a.
Znaci da mi nepise recimo 23.65437, vec da ga ogranicim na 23.6 ili 23.65
[ X Files @ 20.09.2005. 13:58 ] @
Probaj, na primer ovaj pattern (u okviru printf):
%.2f
dakle, nesto kao:
printf( "Rezultat je %.2f\n", tvoj_float );
... koji bi trebao, ako se dobro secam, da ispred ispise onoliko cifara koliko ih
i ima, a iza samo dve.
[ sucur @ 20.09.2005. 14:09 ] @
@X-Files upravu si, sad sam se sjetio da sam to koristio u openGL-u.
Hvala !
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|