Homepage  Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum


.dsy:it. .dsy:it. Archive > Didattica > Corsi A - F > Algoritmi e strutture dati
 
stringhe con scanf e puntatori
Clicca QUI per vedere il messaggio nel forum
albakiara
Salve a tutti,
so che sicuramente sarà una cosa banale, ma non ho capito come fare questo:
leggere una stringa di lunghezza non nota con scanf nel main, e passare il puntatore al primo carattere della stringa ad una funzione! Potete scrivermi il codice del main e il prototipo della funzione?
Grazie!

Cronovirus
Originally posted by albakiara
Salve a tutti,
so che sicuramente sarà una cosa banale, ma non ho capito come fare questo:
leggere una stringa di lunghezza non nota con scanf nel main, e passare il puntatore al primo carattere della stringa ad una funzione! Potete scrivermi il codice del main e il prototipo della funzione?
Grazie!


Ciao :D nel testo dell'esercizio dice anche quanto può essere lunga al massimo la stringa?

Cronovirus
Perchè se non lo chiede puoi farlo così:

#include <stdio.h>
#include <stdlib.h>
void func(const char *p){
while(*p!='\0'){
putchar(*p);
p++;
}
}

int main(void){
char *p = malloc(sizeof(char *));
scanf("%s",p);
func(p);
}

albakiara
Grazie per la risposta! :-D
Non è noto niente sulla lunghezza della stringa! io avevo pensato a questo:

printf ("Inserisci stringa:\n");
scanf ("%s", s);

non va bene?

Cronovirus
Guarda sopra ;)

albakiara
Ho guardato, x questo chiedevo se come ho fatto va bene o no? :)

Cronovirus
Si certo XD

albakiara
Grazie ho risolto il mio esercizio! In pratica il mio errore era non aver allocato lo spazio per char*!

Cronovirus
Di niente :D

albakiara
in realtà, ci sarebbe un altro piccolo problema, se inserisco una stringa contenente degli spazi, il programma non funziona!
ecco il main:
int main (void) {
char ch;
char* s = malloc (sizeof (char*));
if (s == NULL)
exit (1);
printf ("Inserisci stringa: \n");
scanf ("%s", s);
printf ("Inserisci il carattere da eliminare: \n");
scanf (" %c", &ch);
printf ("%s\n", cancella_ch(s, ch));
return 0;
}

Cronovirus
E' normale: diverse funzioni di libreria si fermano quando leggono il carattere 'spazio'! dovresti usare un array di puntatori http://linux.die.net/man/3/scanf, in particolare dice riguardo a %s: "Matches a sequence of non-white-space characters; the next pointer must be a pointer to character array that is long enough to hold the input sequence and the terminating null byte ('\0'), which is added automatically. The input string stops at white space or at the maximum field width, whichever occurs first. "

albakiara
ah già, grazie :)

Powered by: vbHome (lite) v4.1 and vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento |Licenze | Thanks | Syndacate