Newsgroup: it.comp.programmare.win32
Titolo: perchè scanf/printf non funzionano con VC++ 5.0/Win98 ?

Sono uno studente universitario.
Scusate la domanda stupida: perchč printf e scanf con Win98/Visual C++ 5.0
non funzionano ?
Il codice che ho utilizzato č questo:
#include <stdio.h>
int main(void){
 int a;
 printf("inserisci numero intero: \n");
 scanf("%d",&a);
 printf("%d",&a);
 return 0;
}
Ho fatto qualche errore oppure c'č un motivo che ignoro ? Come posso
risolvere il problema ?
Grazie.
Giancarlo Penza
pe...@tin.it

Innanzitutto grazie per la risposta. Scusami per la mia abissale ignoranza,
ma a fare
la tesi sono da solo, per di più non ho chi mi aiuta perchè il mio prof. non
sa niente di C/C++; inoltre il tempo scarseggia perchè sto facendo il
servizio civile. E per finire ho anche un braccio ingessato !
Premetto che hai ragione: non so cosa sia la programmazione sotto Windows ed
ho appena iniziato a studiare il C++ (conosco solo l'ANSI C). Sono stato
costretto ad usare Visual C++ perchè devo usare (per la tesi) una libreria
(Engsim) che permette di manipolare facilmente le matrici. Sto infatti
traducendo il programma che ho fatto in Matlab in C, che è più veloce.
Ho provato la modalità console (se non ho capito male, creo un file
eseguibile del mio programma, da lanciare in una finestra Dos sotto Windows)
e in effetti scanf e printf (con la correzione che mi hai indicato)
funzionano.
Il problema è che io devo usare questa benedetta libreria: mi viene fornito
il file con estensione dsp e dsw:. Apro il file del workspace con estensione
dsw e poi fa tutto lui, cioè carica tutti i file (header e altri) necessari
per funzionare e setta tutte le opzioni per il progetto. Se non ho capito
male, lui crea un progetto del tipo MFC AppWizard. A questo punto non so più
niente.
La libreria che sto usando mi dice che Windows non ha standard I/O e quindi
printf non è accettato: questa libreria mette a disposizione un comando
'printw' (sta per print to window) per visualizzare stringhe e variabili(mi
funziona correttamente), ma non da un comando analogo per acquisire dati da
tastiera, analogo a scanf: come faccio ?
Mi sono chiesto se sia possibile utilizzare la libreria creando una
applicazione console, dove
posso usare printf e scanf. Io ho provato, ma in fase di linkaggio mi da
diversi errori. Come faccio a recuperare tutte le opzioni (settings) del
progetto con MFC per il console  ?
Grazie mille per il tempo che mi hai dedicato: prometto che inizierò a
studiare la programmazione sotto Windows, è solo questione di tempo.
Ciao
Giancarlo Penza
pe...@tin.it

...


La tua domanda è una di quelle classiche in cui non si capisce se si tratta
di una provocazione o di un quesito serio. In ogni caso ti do una risposta
seria.
Da quanto ho capito tu non sai cosa sia la programmazione Windows, giusto?
Non puoi infatti pretendere di programmare un'interfaccia grafica come se
fosse un ambiente a carattere. Perciò è ovvio che il programma com'è scritto
non possa funzionare.
Forse tu volevi scrivere un programma DOS? Ebbene, VisualC dalla versione 2
in poi è a 32 bit e non compila programmi DOS.
Infine è possibile che tu fossi interessato alla modalità console di
Windows, ovvero un sistema per scrivere veri programmi Win32, con formato di
file PE e con indirizzamento interno a 32 bit.
È un sistema comodo per non dover scrivere un programma con interfaccia e in
questo caso per non dover tornare ad un compilatore a 16 bit. Allora il tuo
codice dovrebbe funzionare, devi solo specificare a VisualC che si tratta di
un'applicazione Console (menu File>New, tab Projects, voce Win32 Console
Application).
Anche in questo caso c'è però un problema: printf("%d",&a); è sbagliato,
perché il parametro a non va passato per indirizzo! Ecco il sorgente:
#include <stdio.h>
void main(void)
{
   int a;
   printf("inserisci numero intero: \n");
   scanf("%d",&a);
   printf("%d",a);
}
Ciao,
Lorenzo
---
"...un tipo perso dietro le nuvole e la poesia..."
Lorenzo "Loz" Novara
E-Mail: 
l...@iol.it
ICQ: 30416703
Web: 
http://loz.freeweb.org
 - 
http://www.poli.studenti.to.it/~l.novara

tastiera, analogo a scanf: come faccio ?
O come suggerito sopra o con un controllo Edit in una Dialog Box :) (che forse
dopo un po' di smarrimento e` il modo piu` facile!).
_mirko_
PS: Se volete contattarmi in privato, NON ciucciatevi il calzino :).