Problem z tworzeniem pliku o zadanej nazwie
Ostatnio zmodyfikowano 2015-06-11 13:58
ziomal123456789 Temat założony przez niniejszego użytkownika |
Problem z tworzeniem pliku o zadanej nazwie » 2015-06-10 11:31:48 Mam problem, gdyż nie wiem jak stworzyć plik o zadanej nazwie. Nazwa pliku ma zostać podana z lini poleceń po przełączniku -i. Napisałem coś takiego. char * pobranienazwyplikuwejsciowego( int argc, char * argv[] ) { char plikwejsciowy[ 50 ]; int i; for( i = 0; i < argc; i++ ) if( argv[ i ] == '-i' ) strcpy( plikwejsciowy, argv[ i + 1 ] ); return plikwejsciowy; }
char * pobranienazwyplikuwyjsciowego( int argc, char * argv[] ) { char plikwyjsciowy[ 50 ]; int i; for( i = 0; i < argc; i++ ) if( argv[ i ] == '-o' ) strcpy( plikwyjsciowy, argv[ i + 1 ] ); return plikwyjsciowy; } |
|
pekfos |
» 2015-06-10 11:54:41 Zwracasz adres zmiennej lokalnej, a wywołanie strcpy wysypie program, jeśli -i jest ostatnim argumentem. |
|
Monika90 |
» 2015-06-10 12:51:57 sądzę, że wystarczy to zrobić w ten sposób: #include <stdio.h>
struct options { const char * input; const char * output; };
void parse( int argc, char ** argv, struct options * opts ) { char opt = 0; for( int i = 1; i < argc; ++i ) { if( argv[ i ][ 0 ] == '-' ) opt = argv[ i ][ 1 ]; else { switch( opt ) { case 'i': opts->input = argv[ i ]; break; case 'o': opts->output = argv[ i ]; break; } opt = 0; } } }
int main( int argc, char ** argv ) { struct options opts = { "?", "?" }; parse( argc, argv, & opts ); printf( "input: %s\noutput: %s\n", opts.input, opts.output ); }
|
|
ziomal123456789 Temat założony przez niniejszego użytkownika |
» 2015-06-11 09:00:40 Dzięki bardzo działa. Tylko mam jeszcze pytanie. Po co przypisujesz te "?" do struktury? |
|
Monika90 |
» 2015-06-11 13:58:20 Po to żeby printf wyświetliło ?, gdy użytkownik nie poda parametru. |
|
« 1 » |