PDA

Visualizza la versione completa : [C] confronto array


kratos 475
14-04-2013, 14:42
salve,
ho 2 problemi:
1) devo fare un confronto con 2 array di interi, (in c++ abbastanza facile ma in c non conoscendolo bene non so come farlo), c' qualche funzione speciale?? mi serve per sapere se un elemento dell'array1 uguale a quello dell'array2 o in un altro caso se maggiore..

2)sempre con array, ma di char, voglio fare un confronto tra gli array, so che esiste la funzione strcmp ma non so come scriverla sintatticamente..
array1[5]="ciao";
array2[5]="ciai";

Scara95
14-04-2013, 15:02
La sintassi per gli array esattamente la stessa...

E' una semplice chiamata a funzione che ritorna
-1: (array1 < array2)
0 (array1 == array2)
+1 (array1 > array2)

strcmp(array1, array2)

kratos 475
14-04-2013, 15:07
anche se devo confrontare 2 array di int e 2 array char??

a me da questo errore facendo quello di interi

[Warning] passing arg 1 of `strcmp' makes pointer from integer without a cast
[Warning] passing arg 2 of `strcmp' makes pointer from integer without a cast

Scara95
14-04-2013, 15:10
Originariamente inviato da kratos 475
anche se sono devo confrontare array di int e array char??
Non ho capito che intendi

Per confrontare due elementi di indici i e j in due array a e b fai
a[i] == b[j] o qualsivoglia operatore di confronto...

Per confrontare due array di char a e b per l'ordine alfabetico fai
strcmp(a, b)

kratos 475
14-04-2013, 15:29
mi sono espresso a dir poco malissimoXD
cmomunque guarda gli errori che mi da quando uso strcmp con 2 array di interi

Scara95
14-04-2013, 15:31
Non puoi utilizzare strcmp con due array di interi!
E' una funzione fatta per l'ordinamento alfabetico di due stringhe di caratteri: array di char terminate da un '\0'

Descrivi in che modo devi confrontare i due array di interi...

kratos 475
14-04-2013, 15:36
Originariamente inviato da Scara95
La sintassi per gli array esattamente la stessa...

E' una semplice chiamata a funzione che ritorna
-1: (array1 < array2)
0 (array1 == array2)
+1 (array1 > array2)

strcmp(array1, array2)

tu avevi detto cos...
comunque con quello di interi ho risolto da solo...
devo confrontare i campi char di uno struct tra di loro e sapere se sono uguali, come faccio??

Scara95
14-04-2013, 15:39
Avevo risposto alle tue due domande separatamente.

char o char * ???
Se sono char *
strcmp(a, b) == 0
Se sono char
a == b

kratos 475
14-04-2013, 15:45
struct nome{
char cognome[25];
}t_nome;

questo lo struct intendo come faccio a confrontare i campi cognome e sapere se sono uguali,
credo siano di tipo char..

Scara95
14-04-2013, 15:48
Ma hai studiato le basi del linguaggio?! (che sono le stesse del C++, anzi: nella maggior parte dei manuali e dei corsi C++ si parte dal C)


strcmp(var1.cognome, var2.cognome)==0

Loading