PDA

View Full Version : [C] leggere una stringa da st. input


TorpedoBlu
21-07-2006, 10:27
ho fatto questa funzione


/*----------------------------------------------------------------------------*/
/*Legge una parola da standard input*/
char *read_word(){
int i, buf = buffer;
char c, *word = calloc(1,sizeof(char));

while(isspace(c = getchar()));
for (i = 0; c != '\n' && c != EOF && !isspace(c); ++i){
if(i == buf - 1) {
word = realloc(word, buf += buf);
}
word[i] = !isspace(c) ? c : '\0';
c = getchar();
}
word[i] = '\0';

return word;
}


ma devo modificarla per il caso in cui si inserisca una parola vuota (mi deve restotuire una stringa vuota) come posso fare?

ilsensine
21-07-2006, 10:48
ma devo modificarla per il caso in cui si inserisca una parola vuota (mi deve restotuire una stringa vuota) come posso fare?
Dovrebbe già funzionare così. In caso di parola vuota, restituisce semplicemente "" (stringa vuota).

TorpedoBlu
21-07-2006, 11:09
Dovrebbe già funzionare così. In caso di parola vuota, restituisce semplicemente "" (stringa vuota).
eh no perchè anche se mando degli /n non li prende, prende solo lo spazio come fine input.

ilsensine
21-07-2006, 13:50
Ah isspace() ritorna vero anche se il carattere è '\n'...boh...
Sostituisci il ciclo while con questo:


do {
c = getchar();
} while (c!='\n' && isspace(c) && c!=EOF);