|
|
|
![]() |
|
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 20:43. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
|
passandogli argv[1] passi un singolo char * alla funzione
__________________
![]() |
![]() |
![]() |
![]() |
#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: 11:34.