Questo codice deve saltare lo spazio bianco e restituire una parola alla volta. Un paio di domande su questo codice: quando il codice arriva alla * parola ++ = c; linea ottengo un core dump. Ho scritto questa riga correttamente? ed è di ritorno corretto. E ho bisogno di allocare in qualche modo la memoria per memorizzare la parola?Salta spazio bianco e restituisce una parola alla volta in C
//get_word
int get_word(char *word,int lim){
int i=0;
int c;
int quotes=0;
int inword = 1;
while(
inword &&
(i < (lim-1)) &&
((c=getchar()) != EOF)
){
if(c==('\"')){//this is so i can get a "string"
if (quotes) {
inword = 0;
}
quotes = ! quotes;
}
else if(quotes){ //if in a string keep storing til the end of the string
*word++=c;//pointer word gets c and increments the pointer
i++;
}
else if(!isspace(c)) {//if not in string store
*word++=c;
i++;
}
else {
// Only end if we have read some character ...
if (i)
inword = 0;
}
}
*word='\0'; //null at the end to signify
return i; //value
}
Ti dispiacerebbe se rimuovo il cast dal valore restituito di 'malloc'? –
@R .., senza questo viene visualizzato un errore di compilazione dal' malloc 'restituisce' void * ': errore C2440: 'initializing': non può convertire da 'void *' a 'char *' La conversione da 'void *' al puntatore a non-'oid richiede un cast esplicito" –
@Steve: Then probabilmente stai usando un compilatore C++ per compilare il codice C :) – fredoverflow