Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z tworzeniem pliku o zadanej nazwie

Ostatnio zmodyfikowano 2015-06-11 13:58
Autor Wiadomość
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.
C/C++
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;
}
P-133419
pekfos
» 2015-06-10 11:54:41
Zwracasz adres zmiennej lokalnej, a wywołanie strcpy wysypie program, jeśli -i jest ostatnim argumentem.
P-133421
Monika90
» 2015-06-10 12:51:57
sądzę, że wystarczy to zrobić w ten sposób:
C/C++
#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 );
}
P-133424
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?
P-133451
Monika90
» 2015-06-11 13:58:20
Po to żeby printf wyświetliło ?, gdy użytkownik nie poda parametru.
P-133457
« 1 »
  Strona 1 z 1