Oppure

Loading
03/07/13 14:22
superdario
salve ragazzi!
ho un array bi dimensionale e in ogni riga ci metto una parola. Solo che devo interrompere l'input delle parole quando inserisco"basta". Io ho fatto così solo che non mi si interrompe quando metto la parola "basta":

	while(arr[y]!="basta"){
		y++;
		while((c=getchar()) != '\n'){
			arr[y][x]=c;
			x++;
		}
	}

come faccio ad interrompere il ciclo quando inserisco la parola "basta"?
aaa
03/07/13 19:04
Bonny
In Linguaggio C per confrontare due stringhe (array di char) si usa la funzione

int strcmp(char *str1, char* str2);

vedi doc: digilander.libero.it/uzappi/C/librerie/funzioni/…
aaa
04/07/13 8:06
moloskovic
C non accetta tra le operazioni standard quelle tra librerie. Come ha detto Bonny, la funzione da utilizzare in questo caso è strcmp, che restituisce:
- 0 se le stringhe sono uguali
- int>0 se la prima stringa viene alfabeticamente prima della seconda
- int<0 se la seconda stringa viene alfabeticamente prima della prima
In questo caso, dunque, l'operazione sarebbe qualcosa del tipo
while (strcmp(arr[y],"basta";))...
Attento a tre cose: uno quel while all'inizio, se l'array è vuoto, potrebbe darti problemi....perchè non usare do while?
Due: le operazioni di confronto sulle stringhe effettuano un confronto carattere per carattere fino a quando non trovano il carattere di fine stringa 'C non accetta tra le operazioni standard quelle tra librerie. Come ha detto Bonny, la funzione da utilizzare in questo caso è strcmp, che restituisce:
- 0 se le stringhe sono uguali
- int>0 se la prima stringa viene alfabeticamente prima della seconda
- int<0 se la seconda stringa viene alfabeticamente prima della prima
In questo caso, dunque, l'operazione sarebbe qualcosa del tipo
while (strcmp(arr[y],"basta";))...
Attento a tre cose: uno quel while all'inizio, se l'array è vuoto, potrebbe darti problemi....perchè non usare do while?
Due: le operazioni di confronto sulle stringhe effettuano un confronto carattere per carattere fino a quando non trovano il carattere di fine stringa '{parsed_message}', che tu non hai inserito.
Tre: se non azzeri x ad ogni inizio ciclo ti arriva a scrivere in Indonesia :asd:', che tu non hai inserito.
Tre: se non azzeri x ad ogni inizio ciclo ti arriva a scrivere in Indonesia :asd:
aaa