Originariamente inviato da Alcott
Ecco la stampa:
codice:
[Andrea@MSHOME ~]$ ./a.out x 10 2 w
argv[0] = ./a.out
argv[1] = x
argv[2] = 10
argv[3] = 2
argv[4] = w
nomeFile: /home/Andrea/dati.txt
Cmq sembra andare con strcmp. Non capisco come mai. Non dovrebbe solo controllare se le due stringhe hanno la stessa lunghezza? Qui invece se ho ben capito mi vede se le due stringhe sono uguali!
Ah, a proposito... grazie 1000!
Forse ti sei un pò confuso...
codice:
int lunghezza = strlen( stringa );
Restituisce la lunghezza di una stringa
codice:
int res = strcmp(stringa1, stringa2);
Restituisce (secondo le regole lessicografiche):
codice:
Minore di 0 se stringa1 < stringa2
0 se stringa1 = stringa2
Maggiore di 0 se stringa1 > stringa2
Le istruzioni che avevi scritto :
codice:
...
if(argv[4] == "a") // apertura file in appendice
...
...
if(argv[4] == "w") // apertura file in scrittura
...
Entrambe darebbero sempre falso come risultato (puoi provare) perchè esse confrontano i puntatori alle stringhe
non il loro contenuto.
Potresti usare quel modo confrontando però ogni singolo carattere
di ogni stringa con quello dell' altra es:
codice:
if( stringa1[0] == stringa2[0] )
...oppure ...
if( stringa1[0] == 'w' ) // dati char tra apici singoli !
Sicuramente più comodo 'strcmp()'