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

Argumenty funkcji main

Ostatnio zmodyfikowano 2015-11-24 21:54
Autor Wiadomość
Artur-W
Temat założony przez niniejszego użytkownika
Argumenty funkcji main
» 2015-11-24 19:27:35
Chciałbym napisać program w którym, wczytuję dane do pliku za pomocą argumentów funkcji main. Wiersz zaczynający się kropką będzie stanowić koniec zapisu do pliku. Przeczytałem różne poradniki, ale nie mogę rozwiązać mojego problemu.
Napisałem kod źródłowy i kompilator wyrzuca mi błąd. Moglibyście dać wskazówki, porady co jest źle i jak naprawić błędy. Z góry dziękuję za pomoc i poświęcony czas.
C/C++
#include<stdio.h>
int main( int argc, char * argv[] )
{
    int placa[ 100 ];
    char nazwa[ 15 ];
    printf( "Podaj nazwe pliku do zapisu danych \n" );
    scanf( "%s\n", argv[ 0 ] );
    do
    {
       
        printf( "Podaj nazwe pracownika i jego place" );
        scanf( "%s %d\n", nazwa, placa );
        argc++;
        argv[ argc ] = nazwa;
        argc++;
        argv[ argc ] = placa;
       
    } while(( argv[ argc ] ) != '.' );
   
    return 0;
}
P-140724
michal11
» 2015-11-24 19:33:01
Dlaczego nadpisujesz tablice argv ?
C/C++
argc++;
argv[ argc ] = nazwa;
Tutaj zdecydowanie wychodzisz poza zakres tablicy.

Czy dobrze zrozumiałem, że chcesz zapisać do pliku dane z którymi uruchamiany jest twój program ?
P-140730
Artur-W
Temat założony przez niniejszego użytkownika
» 2015-11-24 19:57:25
michal11 tak, dobrze zrozumiałeś.
Niezbyt rozumiem te argumenty i liczyłem, że w takim programie mi się uda wszystko zrozumieć.
To w pętli do while może dam zmienną typu int i, która będzie się zwiększać o 1 i użyję wtedy argv i przypiszę dane. Czy ten sposób załatwi sprawę?
P-140733
michal11
» 2015-11-24 20:42:31
Przede wszystkim nigdzie nie tworzysz pliku do którego chcesz zapisywać, jak już to zrobisz to w pętli (wystarczy zwykły for) zapisuj fprintf'em po kolei element tablicy argv do tego pliku. Przykład:
C/C++
for( int i = 1; i < argc; ++i )
{
    fprintf(...);
}

Pamiętaj, że argv[0] to nazwa pliku który uruchamiasz.
P-140739
pekfos
» 2015-11-24 21:54:55
To w pętli do while może dam zmienną typu int i, która będzie się zwiększać o 1 i użyję wtedy argv i przypiszę dane. Czy ten sposób załatwi sprawę?
Najlepszy sposób by załatwić sprawę, to nie używanie rzeczy, których się nie rozumie. Używasz tych argumentów kompletnie niezgodnie z ich przeznaczeniem. Pomijając już, ze same operacje i ich cel tu też nie mają sensu.
P-140751
« 1 »
  Strona 1 z 1