|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Apr 2006
Messaggi: 59
|
[C] - Passaggio di argv[] a una funzione
Sto cercando di fare una bozza, ma ho problemi sui puntatori. Mi date una mano?
Codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int Controllo1(char argv[]);
int main(int argc, char *argv[]){
int i;
switch(argc){
case 2: i = Controllo1(argv[1]);
if(i == 0) printf("OK\n");
else printf("KO\n");
return 0;
default: printf("default\n");
return 0;
}
}
int Controllo1(char argv[]){
if(strcmp(argv[1], "c") == 0)
return 0;
else
return 1;
}
Ultima modifica di Tyler Darden : 09-12-2007 alle 21:43. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
|
passandogli argv[1] passi un singolo char * alla funzione
__________________
ho concluso con: kvegeta, doctordb, Leland Gaunt.
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
argv[1] è un char *, non un char **.
Inoltre tieni conto che argv va da argv[0]...argv[argc-1], quindi argv[1] c'è se argc>1.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Apr 2006
Messaggi: 59
|
si si so come lavora argv[] solo che ho problema sul punatore che passo alla funzione o alla strcmp infatti mla shell mi ritorna questo errore:
prova.c: In function ‘Controllo1’: prova.c:25: warning: passing argument 1 of ‘strcmp’ makes pointer from integer without a cast |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
In quanto in _quella_ funzione argv[1] è un semplice char.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Apr 2006
Messaggi: 59
|
scusa nn doveva essere un singolo char .. ho erroneamente cancellato dove nn dovevo diciamo che ho una stringa "ciao" ecco il codice:
Codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int Controllo1(char * argv);
int main(int argc, char *argv[]){
int i;
switch(argc){
case 2: i = Controllo1(argv[1]);
if(i == 0) printf("OK\n");
else printf("KO\n");
return 0;
default: printf("default\n");
return 0;
}
}
int Controllo1(char * argv){
if(strcmp(argv[1], "ciao"))
return 0;
else
return 1;
}
copia.c: In function ‘Controllo1’: copia.c:25: warning: passing argument 1 of ‘strcmp’ makes pointer from integer without a cast |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Continua ad essere un singolo char. C'è ben poca differenza in char *argv e char argv[]
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
#8 |
|
Member
Iscritto dal: Apr 2006
Messaggi: 59
|
ok ok ... sembra che ho risolto. grazie per essermi stato dietro.
ciao. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:05.











ho concluso con: kvegeta, doctordb, Leland Gaunt.








