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

sscanf, błąd programu przy braku argumentu

Ostatnio zmodyfikowano 2014-05-25 10:22
Autor Wiadomość
Sarus
Temat założony przez niniejszego użytkownika
sscanf, błąd programu przy braku argumentu
» 2014-05-25 00:47:58
Witam.
Jako pracę domową muszę napisać program który rysuje kwadrat o boku podanym przez użytkownika albo za pomocą argumentu albo wpisując bezpośrednio w programie (gdy argument nie został podany). Tutaj pojawia się mój problem, w poniższym kodzie gdy nie wpiszę argumentu pojawia się informacja "Program przestał działać" z opcją zamknij, jeżeli argument zostanie podany wszystko jest w porządku.
musi wyglądać w ten sposób.
C/C++
c:\> kwadrat.exe
Wpisz dlugosc boku:
3
***
* *
***
C/C++
c:\> kwadrat.exe
Wpisz dlugosc boku:
- 2
Zla dlugosc boku
C/C++
c:\> kwadrat.exe 4
****
* *
* *
****
Z góry dziękuję za pomoc.
Mój kod.
C/C++
#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
int main( int argc, char * argv[] ) {
    int dlugosc, bokpoziom, bokpion;
    char * sprawdz = argv[ 1 ];
    if( sscanf( sprawdz, "%d", & dlugosc ) == 0 ) {
        cout << "Wpisz dlugosc boku: ";
        cin >> dlugosc;
    }
    if( dlugosc > 0 ) {
        for( bokpion = 0; bokpion < dlugosc; bokpion++ ) {
            if( bokpion == 0 || bokpion == dlugosc - 1 ) {
                for( bokpoziom = 0; bokpoziom < dlugosc; bokpoziom++ ) {
                    cout << "*";
                }
                cout << endl;
            } else {
                cout << "*";
                for( bokpoziom = dlugosc - 2; bokpoziom > 0; bokpoziom-- ) {
                    cout << " ";
                }
                cout << "*" << endl;
            }
        }
        return EXIT_SUCCESS;
    } else {
        cout << "Zla dlugosc boku" << endl;
        return EXIT_FAILURE;
    }
}


Building to ensure sources are up-to-date
Selecting target:
Debug
Adding source dir: D:\Projekty c++\Praca domowa 2\CW1\
Adding source dir: D:\Projekty c++\Praca domowa 2\CW1\
Adding file: D:\Projekty c++\Praca domowa 2\CW1\bin\Debug\CW1.exe
Changing directory to: D:/PROJEK~1/PRACAD~2/CW1/.
Set variable: PATH=.;C:\Program Files (x86)\CodeBlocks\MinGW\bin;C:\Program Files (x86)\CodeBlocks\MinGW;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Windows\System32;C:\Windows;C:\Windows\System32\wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Program Files\Intel\WiFi\bin;C:\Program Files\Common Files\Intel\WirelessCommon
Starting debugger: C:\Program Files (x86)\CodeBlocks\MINGW\bin\gdb.exe -nx -fullname  -quiet  -args D:/PROJEK~1/PRACAD~2/CW1/bin/Debug/CW1.exe
done
Registered new type: wxString
Registered new type: STL String
Registered new type: STL Vector
Setting breakpoints
Debugger name and version: GNU gdb (GDB) 7.5
Child process PID: 3684
Program received signal SIGSEGV, Segmentation fault.
In sscanf () (C:\Windows\syswow64\msvcrt.dll)
#2  0x004013a2 in main (argc=1, argv=0x950f98) at D:\Projekty c++\Praca domowa 2\CW1\CW1.cpp:8
D:\Projekty c++\Praca domowa 2\CW1\CW1.cpp:8:174:beg:0x4013a2
At D:\Projekty c++\Praca domowa 2\CW1\CW1.cpp:8
#2  0x004013a2 in main (argc=1, argv=0x950f98) at D:\Projekty c++\Praca domowa 2\CW1\CW1.cpp:8
D:\Projekty c++\Praca domowa 2\CW1\CW1.cpp:8:174:beg:0x4013a2
P-110807
MrPoxipol
» 2014-05-25 10:22:17
C/C++
if( argc < 2 ) {
    cin >> ile;
}
else {
    sscanf( argv[ 1 ], "%d", ile );
}
P-110810
« 1 »
  Strona 1 z 1