PDA

Visualizza la versione completa : Compilatore Dev C


DVX70
16-06-2014, 13:01
Salve ho alcuni problemi con il Dev C:

-) Il primo che l'ho installato su due PC; su uno OK, mentre su
quell'altro non riesco a far eseguire il file compilato utilizzando
ilcomando Esegui-->Esegui (Ctrl F10), ma devo cliccare sul file
eseguibile generato dal processo di compilazione

-) Il secondo riguarda l'istruzione scanf("%s",stringa), dove ovviamente
stringa un array di char.... tutto ok se la stringa inserita non
contiene spazi, mentre se immetto spazi (pur non superando la lunghezza
massima dell'array il comportamento del programma imprevedibile;
mentre se rimpiazzo la scanf(...) con il seguente codice:

while((c=getchar())!='\n')
stringa[i++]=c;

Tutto funziona regolarmente.
Come mai ?

oregon
16-06-2014, 13:36
Per la scanf normale perch lo spazio indica che l'input terminato. Altrimenti dovresti usare la fgets

Per DevC++ non so cosa dirti a parte il fatto che veramente sconsigliato il suo uso.

DVX70
17-06-2014, 20:23
Per la scanf normale perch lo spazio indica che l'input terminato. Altrimenti dovresti usare la fgets

Per DevC++ non so cosa dirti a parte il fatto che veramente sconsigliato il suo uso.

Scusami, ma il carattere di fine stringa non '\0' ?
Per DevC++, cosa mi consiglieresti come alternativa ?
Grazie mille per le risposte

Scara95
17-06-2014, 21:22
Scusami, ma il carattere di fine stringa non '\0' ?Il terminatore di stringa un discorso completamente diverso.

Per DevC++, cosa mi consiglieresti come alternativa ? Puoi usare ad esempio Visual Studio express o Code::Blocks, ma esistono molte altre alternative.
Nel caso tu voglia un compilatore compatto per C, senza il supporto C++, puoi provare anche Pelles C.

Alex'87
17-06-2014, 21:26
S, il carattere di fine riga quello, ma non c'entra nulla in questo caso: chi ha scritto scanf() ha deciso che legge fino allo spazio. E' cos, fine* :D

* In realt usando scanf("%[a-z A-Z0-9]", s); puoi leggere intere frasi ma in questo caso meglio usare fgets()

Loading