PDA

View Full Version : [C]scanf


vincenzo2342
25-06-2009, 09:14
Ciao a tutti,
Premetto di essere nuovo, e di avventurarmi per la prima volta nel mondo della programmazione
Ho un problema con un piccolo programmino.
Esso "raccoglie" una lettera/numero dall'utente, e ne restituisce i successivi 9, secondo "l'alfabeto" ASCII.
Però non capisco come mai scanf si comporta così: scrivo la lettera e premo invio. Niente. riscrivo la lettera e premo invio, e funziona.
2 volte devo scrivere e dare invio. Come mai? cos'ho sbagliato?
Il compilatore non mi dà errori o Warnings.
Nel caso in cui servisse, ecco il codice:
#include <stdio.h>
int main(){
/* Questo programma stampa a schermo tutte le lettere dell'alfabeto a partire da quella inserita*/
char car;
int i, cacca,foo;
printf("Ciao, scrivi una lettera per ottenere le dieci lettere successive dell'alfabeto (ASCII)\n");
scanf("%c\n", &car);
//printf("%c\n", car);
printf("ok, va bene\n\a");
for(i=0;i<10;i++, car++){
printf("%c\n", car);
}
}
Grazie anticipate!:fiufiu:

EDIT: Finche ci sono vi chiedo anche un'altra cosa;
per il PHP, c'è un sito (php.net) in cui trovare informazioni ed esempi sulle funzioni del motore ZEN.
Esiste qualcosa di simile per C?

CwNd
25-06-2009, 11:06
Credo che l'errore, stia nella stringa di formato che usi nella scanf, prova a togliere lo \n :)

Fammi sapere :)

cionci
25-06-2009, 11:47
Per il C++ c'è questo: http://www.cplusplus.com/reference/clibrary/cstdio/fscanf/
Ho scritto C++, ma tutte le funzioni della libreria standard C presenti nello standard C++ sono trattate con codice C ;)

C'è lo \n nel formato della scanf che non ci vuole ;)

vincenzo2342
25-06-2009, 15:09
Perfetto, grazie per la correzione e per il link (già nei segnalibri).
Lo immaginavo più flessibile. MALE! mai immaginare :D
Ciao, a presto;
Vincenzo();

CwNd
25-06-2009, 15:11
Lo immaginavo più flessibile. MALE! mai immaginare :D


La bufferizzazione dell'input del c è veramente una bestia nera... ti ci abituerai ;)

vincenzo2342
26-06-2009, 09:24
Ciao, ehm
Per non aprire una nuova Discussione, chiedo qui:
Che programma mi consigliate per sviluppare programmi (semplici o complessi) sono Gnu/Linux?
Mi sembra troppo "lento" usare Gedit + Terminale.
Mi piacerebbe avere un tasto che basta premere per avere in automatico il programma compilato ed eseguito.
Ho installato Anjuta, ma non ho capito come funziona..:mc:

cionci
26-06-2009, 09:28
Prova Code::Blocks...ricordati che comunque devi creare un progetto prima di poter compilare.

vincenzo2342
27-06-2009, 08:00
Non so farlo funzionare però.
faccio un codice semplice, e premo Build/Build
oppure Build/Compile Current File

ma il primo restituisce
-------------- Build: Debug in Foo ---------------

Linking stage skipped (build target has no object files to link)
Nothing to be done.
il secondo:
Nothing to be done.
:( Speravo in una soluzione semplice, ma mi sa che anche questo programma va studiato
Non esiste un programma, o un plug-in per gedit che faccia sti due comandi:
gcc progetto.c
./a.out
Sono 2 comandi, e ci sono programmi enormi con tante funzioni/impostazioni/cose particolati

ps: il documento non era salvato XD.
Però, dopo averlo salvato e riaperto, non me l'ha più visualizzato correttamente (è spuntato codice XML :o )
Non mi piace neanche l'highlight.

cionci
27-06-2009, 09:38
E' impossibile.
File -> New -> project -> Console application -> Go -> scegli C come lingauggio
Immetti il nome del progetto.
Ti verrà creato un file chiamato main.c in cui puoi scrivere il codice.

vincenzo2342
27-06-2009, 13:16
Console application
Eccolo la!
Ti ringrazio ancora, a presto.
Vincenzo.