PDA

Visualizza la versione completa : [c] acquisire parola con getchar()


mirkul
03-02-2013, 23:42
devo fare una funzione che acquisisce una parola con getchar() e ne restituisca il valore.

cosi' va bene??





void inserimento_stringa( char stringa)
{ printf("inserisci la stringa: ");
char c=getchar();
while (c != '\n')
c=getchar();
return(stringa)
}

oregon
03-02-2013, 23:49
No ... devi comprendere meglio cosa una stringa.

char stringa

solamente un carattere (un solo carattere)

mirkul
03-02-2013, 23:58
non so se ho spiegato bene quello che ovelvo dire...

io voglio una funzione in cui l'utente inserisca quello che vuole (magari senza spazi) e poi mi restituisca quello che mi ha scritto!
apposta ho detto una stringa indefinitamente lunga! pero' non so se e' meglio chiedere all'utente quanto la vuole lunga e poi alloca lo spazio necessario...

si in effetti non mi e' molto chiaro e' da un po che gli sto dietro, ma non riesco a capire come funziona questo getchar, tutti i miei compagni lo usano sempre al posto della scanf!

grazie della risposta!

mirkul
04-02-2013, 00:06
ecco definendo inquesta maniera la grandezza della stringa in cui vado a scrivere!!!
cosa ne pensi??
p.s non ho capito perche' ma il compilatore mi da un warning!




int n;
char *b;

b = (char*)calloc(n, sizeof(char)); // qui mi da il warning

printf("Inserisci il numero totale degli elementi:\n");
scanf("%d", &n);

oregon
04-02-2013, 00:41
Prima prepari lo spazio e poi chiedi all'utente di dire quanto spazio?

Non ti sembra assurdo fare una cosa prima e chiederla dopo?

mirkul
04-02-2013, 01:14
beh si in effetti!! :zizi:

non e' che mi potresti aiutare, non so davvero come posso scrivere questa funzione!

una funzione che mi acquisisca da tastiera un' intera linea e come valore di ritorno ha tutta la linea inserita!!

saranno ore che sto cercando di capirla e ho trovato mille esempi tutti diversi!

grazie mille!

oregon
04-02-2013, 01:20
La cosa migliore che impari tu a scriverla. Che senso ha copiarla?

Comincia a stabilire cosa una stringa e come si scrive in C. Altrimenti non potrai restituirla.

E poi ... come mai non hai trovato nulla ... cerca in questo stesso forum ...

http://forum.html.it/forum/showthread/t-393360.html

Marco1995
04-02-2013, 22:50
Se proprio non vuoi utilizzare delle stringhe puoi utilizzare un approccio ricorsivo..

mirkul
04-02-2013, 23:10
cioe' in che modo??

Marco1995
05-02-2013, 15:25
I passaggi da fare sono i seguenti:
-Ti crei una funzione che non restituiscer alcun valore chiamata Stampa;
-Questa deve prevedere un argomento...in questo caso l'argomento un carattere di tipo char.
-All'interno della funzione intercetti il case baso mediante un if...ovvero..quand' che la funzione non deve pi ripetersi?Risposta:Quando il tasto premuto corrisponde al codice ascii dell'invio.
-Stampi c
carichi in c l'altro carattere attraverso la funzione getchar()
Richiami la funzione Stampa all'interno della stessa funzione...questo l'approccio ricorsivo che ti dicevo...ossia la funzione richiama se stessa fino a quando il carattere c non contiene il codice ascii dell'invio.
Non ti resta altro che invocare nel main questa funzione e compilare e mandare in esecuzion.

Questi sono i passaggi che devi fare,se non sei in grado di farli ti consiglio di vederti una buona guida su come si programma in C/C++..se poi vuoi il codice bello pronto allora chiedi pure. . ma il mio consiglio resta quello di provare da solo
:ciauz:

Loading