Salve a tutti,
sto studiando un esercizio (che funziona correttamente) che implementa una sorta di shell unix. Sono arrivato alla parte del codice che conta il numero di parametri passati da input, che sono separati dal carattere "|".
L'input viene passato tramite fgets e viene inserito in un vettore di caratteri che qui chiamerò copied_string.
Quando mi si apre una fgets per andare avanti nel programma devo premere invio necessariamente...questo inserisce anche il carattere \n nella copied_string?
Per contare il numero di parametri separati da | trovo questa porzione di codice:
Quello che non capisco(per esempio nella prima if) se i parametri li metto da tastiera uno \n ci sarà sempre anche se non scrivo nulla perchè invio per andare avanti lo devo premere o no?codice:int args =0; if (((temp = strtok(copied_tring,"\n"))==NULL) || (strcmp(temp,"\0")==0)) return(-1) args++ while(((temp = strtok(NULL,"\n"))!=NULL)&&(strcmp(temp,"|")!=0)){ if(strcmp(temp,"\0")==0) break; args++
Nel while perchè la strtok non vine fatta sul carattere | anzichè \n che a mio avviso, se è il tasto invio (newline) non ce ne può essere più di uno?

Rispondi quotando