Newsgroup: it.comp.lang.c
Titolo: Problema passaggio a funzione di una stringa dinamica.

Ho un problema, precisamente sullo scanf, come mai??
void metodo(char *,char*);
int main(){
char *a,*b;
a = (char*)malloc(3 * sizeof(char));
b = (char*)malloc(3 * sizeof(char));
 metodo(a,b);
}
void metodo(char *x,char *y){
        printf("\nInserisci prima stringa ==> ");
        scanf("%s",x); //E' qui che si blocca l'esecuzione!!
        printf("\nInserisci seconda stringa ==>");
        scanf("%s",y);
}
Un grazie anticipato a tutti voi! E buon 2004!

> Ho un problema, precisamente sullo scanf, come mai??
Diciamo che il problema non è solo sullo scanf ... ma su tutto il resto 
del programma, non è una critica ma un consiglio, vado di fretta ma
comunque ti do una dritta sullo scanf
int n;
scanf ("%s",&n);
prova adesso a correggere il tuo programma sullo scanf
Ciao Max
+-----------------------------------------------------------+
| Secondo alcuni autorevoli testi di tecnica Aeronautica,   |
| il calabrone non può volare, a causa della forma e del    |
| peso del proprio corpo in rapporto alla superficie alare. |
| Ma il calabrone non lo sa e perciò continua a volare.     |
|					     Igor Sikorsky  |
+-----------------------------------------------------------+

 scanf ("%s",&n);
Puo` essere che non mi sia ancora ripreso da ieri, ma mi pare che lo
specificatore di conversione sia sbagliato:
int n;
scanf ("%d", &n);
Nel caso dell'OP le conversioni sono giuste, x ed y sono due puntatori
a char.
LUca
-- 
Home: 
http://kronoz.cjb.net
"Di tutte le perversioni sessuali, la castita` e` la piu` strana".
Anatole France

 scanf ("%d", &n);
No sono io quello che non si è ancora ripreso da ieri da ieri :)
come aveva scritto Kenyon per la stringa era corretto!
Chiedo venia, sono più di 24 che non dormo o ancora le esalazioni
alcoliche che mi girano in testa, prima non volevo
dare retta ai sintomi che avevo : vedevo Pamela Anderson nuda 
che mi salutava ... , ma adesso dopo questa eresia ho capito
che devo ricaricare le batterie :)


 ha scritto nel messaggio
news:20040101171644....@me.it...


 però mi interessa sapere..
Ciao, fai una cosa metti a /dev/null tutto quello che ho scritto
in questo thread (tranne questo post naturalmente) non ricordo
neanche il perchè di quello che ho scritto ... le esalazioni alcoliche
stanno scomparendo ma ancora non sono scomparse del tutto :)


 programma + grande..
Immaginavo.
Prima di tutto non ci vuole il cast sul valore di ritorno di malloc. Poi
per leggere  i dati usi  scanf che  non effettua nessun  controllo sulla
lunghezza  dell'input immesso  [1]. Terza  cosa, sizeof(char)  e` 1  per
definizione e puoi quindi ometterlo.
[1] E penso che un overflow  sia anche la causa del malfunzionamento del
programma di esempio, visto che il codice e` formalmente corretto.
Luca
-- 
Home: 
http://kronoz.cjb.net
Runtime error 6D at f000:a12f : user incompetente

 programma di esempio, visto che il codice e` formalmente corretto.
Oh cavolo ma non mi dire, allora nel mio inconscio/subconscio o quello
che è, avevo intravisto queste cose ... allora il cervello umano ha una cache
da qualche parte che non è sensibile alle "bollicine" ;)



No no poi il problema era un altro....non c'entrava con questo pezzetto di
codice....ah al posto di scanf cosa posso usare? fgets/gets?


 codice....ah al posto di scanf cosa posso usare? fgets/gets?
gets no perche` soffre dello stesso problema della scanf. Puoi usare
fgets oppure scanf avendo cura di indicare nello specificatore di
conversione la lunghezza massima ammessa per l'input.
Luca
-- 
Home: 
http://kronoz.cjb.net
Se non sei parte della soluzione, allora sei parte del problema.