Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - confrontare contenuto array
Forum - C/C++ - confrontare contenuto array

Avatar
superdario (Normal User)
Newbie


Messaggi: 6
Iscritto: 03/07/2013

Segnala al moderatore
Postato alle 16:22
Mercoledì, 03/07/2013
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":

Codice sorgente - presumibilmente Plain Text

  1. while(arr[y]!="basta"){
  2.                 y++;
  3.                 while((c=getchar()) != '\n'){
  4.                         arr[y][x]=c;
  5.                         x++;
  6.                 }
  7.         }


come faccio ad interrompere il ciclo quando inserisco la parola "basta"?


sd
PM Quote
Avatar
Bonny (Member)
Expert


Messaggi: 435
Iscritto: 24/04/2009

Segnala al moderatore
Postato alle 21:04
Mercoledì, 03/07/2013
In Linguaggio C per confrontare due stringhe (array di char) si usa la funzione

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

vedi doc: http://digilander.libero.it/uzappi/C/librerie/funzioni/str ...


Bonny
PM Quote
Avatar
moloskovic (Member)
Newbie


Messaggi: 3
Iscritto: 04/07/2013

Segnala al moderatore
Postato alle 10:06
Giovedì, 04/07/2013
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 '\0', che tu non hai inserito.
Tre: se non azzeri x ad ogni inizio ciclo ti arriva a scrivere in Indonesia :asd:


Mario Lamacchia
PM Quote