Oppure

Loading
25/05/12 14:25
Deve essere

+ '0'

e il counter non deve partire da 0 e aumentare altrimenti avrai il numero scritto al contrario. Dovrà partire dalla cifra più a destra e diminuire.

Dato che converti un intero a 32 bit, potrai preparare una stringa di 32 spazi (+ il terminatore NULL) e riempire a partire da counter = 32 decrementandolo
31/05/12 17:36
ikim
l'ho riscritto un po' meglio (ancora tanto lavoro da fare)

pastebin.com/…
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 31/05/12 22:04
aaa
31/05/12 18:43
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 ...
31/05/12 20:20
ikim
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...

crasseux.com/books/ctutorial/…

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.
aaa
01/06/12 5:08
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 ...