Newsgroup: it.comp.lang.c
Titolo: win e c non vanno d'accordo, come fare?

ciao a tutti, mi sono rivolto a voi perchč ho un problema che dovrei
risolvere al piů presto solo che non so cosa fare.
dopo aver scritto e
compilato il mio bel programmino cerco di provarlo e finchč il programma
sputa testo va tutto bene, quando do o modifico un valore ad una variabile
si blocca il programma e windows fa un errore.
questo sotto linux non
succede, quindo non č il programma che č sbagliato. attualmente uso visual
c++, perchč non trovo altro. in passato avevo anche provato compilatori
esclusivamente per c ma veniva sempre l'errore.
non so come fare a
risolvere questo problema e ora che ho trovato un programma interesante che
vorrei far girare sotto win sono disperato. aiutatemi
vi ringrazio cmq in
anticipo per l'aiuto che spero mi darete.
grazie
--------------------------------
Inviato via 
http://usenet.iol.it

succede, quindo non č il programma che č sbagliato.
Non e' detto: ci sono dei comportamenti undefined behaviour e potrebbe
succedere che sotto linux hanno deciso di farlo funzionare come tu ti
aspetteresti, sotto Windows hanno deciso di segnalare errore. Nessuna
delle 2 scelte e' sbagliata.
Posta il pezzo di codice incriminato (non tutto il programma) e
l'errore che di da'.
-- 
Mox
"Trust the programmer."
"Don't prevent the programmer from doing what needs to be done."
"Keep the language small and simple."
"Provide only one way to do an operation."

l'errore
che di da'.
ma, non c'è un particolare codice, tutte le variabili in
tutti i programmi provocano questo errore anche questo:
#include
<stdio.h>
#include <stdlib.h>
char nome[];
int main (void) {
printf("Ciao!\nCome ti chiami?\n");
scanf("%s", nome[]);
printf("Ciao
%s", nome[]);
return 0;
} 
il tutto si blocca quando do l'invio dopo
avere scritto il nome.
non so quale sia il problema.
per quanto riguarda
l'errore non te lo posso scrivere perche al momento non ho installato
visual c++
anche perchè ultimamente sono impegnato per gli esami è non
sono molto allenato.
grazie cmq per l'interessamento e se trovi la
soluzione, ti prego, scrivi!


 } 
allora l'ho provato in turbo c++ 3.1 per win della borland, correggendo 
gli errori:
#include <stdio.h>
#include <stdlib.h>
char nome[25];
int main (void) {
printf("Ciao!\nCome ti chiami?\n");
scanf("%s", &nome);
printf("Ciao %s", nome);
return 0;
} 
così a me funziona.

 il tutto si blocca quando do l'invio dopo avere scritto il nome.
Si blocca? Non credo neppure che compili.
#include <stdio.h>
int main(void) {
        char nome[64];
        printf("Ciao!\nCome ti chiami?\n");
        scanf("%s", nome);
        printf("Ciao %s\n", nome);
        return 0;
}
scanf pero` non ha il controllo sulla lunghezza della stringa, sarebbe
meglio sostituirlo con:
fgets(nome, sizeof(nome), stdin);
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
Quando un uomo porta dei fiori a sua moglie senza motivo, 
un motivo c'e`.

} 
Le correzioni di Kronos e Metal_Lord sono giuste, pero' mi stupisco di
una cosa: che il GCC non sia saltato su a imprecare :)
Il MinGW addirittura mi segnava errore le quadre senza parametri usate
nella printf e nella scanf (e con tutte le ragioni del mondo) e mi
dava un warning sulla dichiarazione di "char nome[]" dicendomi che se
lo dichiaro cosi' assumo che abbia un solo elemento.
A me il codice (con le 2 correzioni sulle quadre) funziona, pero' va'
(evidentemente) in overflow e ti funziona solo se hai fortuna (ammesso
che il compilatore lo compili, secondo me con -Wall -pedantic non
passa proprio).


 
Il borland anche a me segnava errore su tutte le quadre.
Ho corretto con char nome[25]; e anche tutte le altre sono andate a posto.

ciao a tutti
 un po' che non riguardo questo messaggio e mi sono accorto
delle risposte.
il codice che avevo scritto era solo un esempio, lo so che
e sbagliato, ma era solo un esempio. 
anche dando una dimensione agli
array mi fa questo errore.
anche solo scrivendo una lettera tipo
#include <stdio.h>
#include <stdlib.h>
char a;
int main(void) {
printf("Ciao!\nScrivi una lettera: ");
scanf("%s", a);
printf("\nHai
scelto la lettera: %s", a);
return 0;
}
il prompt da lo stesso errore
quando do l'invio dopo aver scritto la lettera.
questo su linux va!
sinceramente guardando i messaggi di risposta non ho provato a mettere
scanf("%s", &nome);, devo provarlo.
grazie a tutti per le risposte che
avete scritto fin'ora.
l'ultima cosa:
il complatore della borland
citato in qualche messagio, si trova free? ed ci vuole molto per scaricarlo
con una linea a 56k?
