Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - convertitore bin/dec
Forum - C/C++ - convertitore bin/dec - Pagina 2

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
ikim (Normal User)
Newbie


Messaggi: 8
Iscritto: 25/05/2012

Segnala al moderatore
Postato alle 19:36
Giovedì, 31/05/2012
l'ho riscritto un po' meglio (ancora tanto lavoro da fare)

http://pastebin.com/0hF6A8gA
ma...

Program received signal SIGSEGV, Segmentation fault.
0x0000000000400cb4 in main (argc=1, argv=0x7fffffffe3d8) at decbin2.c:92
92                    if ((strcmp(binarystring,"exit")) == 0) {

Ultima modifica effettuata da ikim il 01/06/2012 alle 0:04
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6404
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 20:43
Giovedì, 31/05/2012
E' sempre un problema di "puntatori" usati male ...

Ti ricordo che non basta un puntatore ad una stringa per lavorare con la stringa.
Il puntatore è solamente l'indirizzo, ma devi creare lo spazio per avere la stringa.

Poi vorrei capire cosa vuol dire

%as

in scanf("%as", &binarystring);

Fai attenzione a binarystring perché è un puntatore e non una stringa ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
ikim (Normal User)
Newbie


Messaggi: 8
Iscritto: 25/05/2012

Segnala al moderatore
Postato alle 22:20
Giovedì, 31/05/2012
intendi dire che dovrei allocare memoria per la stringa?

ok, posso provarci. Ma riesci a farmi vedere un esempio (applicato al mio codice)?

quanto ad %as, è una estensione di gcc, in effetti non dovrei usarla in quanto non uso solo tale compilatore...

http://crasseux.com/books/ctutorial/String-overflows-with- ...

When you specify a field width, you need to provide a buffer (using malloc or a similar function) of type char *. (See Memory allocation, for more information on malloc.) You need to make sure that the field width you specify does not exceed the number of bytes allocated to your buffer.

On the other hand, you do not need to allocate a buffer if you specify the a flag character -- scanf will do it for you. Simply pass scanf an pointer to an unallocated variable of type char *, and scanf will allocate however large a buffer the string requires, and return the result in your argument. This is a GNU-only extension to scanf functionality.

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6404
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 7:08
Venerdì, 01/06/2012
Ti faccio notare che per l'input del valore decimale hai usato una stringa

char decimalstring[MAXSIZE];

mentre per l'input del valore binario hai usato un puntatore

char *binarystring

senza nessuna stringa.

Non capisco perché ragioni in maniera diversa nei due casi. Ovviamente uno dei due è sbagliato ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo