PDA

View Full Version : [C] Nella mia funzioncina ho problemi di tipo mi pare. :(


Matrixbob
11-01-2007, 23:36
Ancora 1 volta lamero nel caos. :)
Praticamente la funzione che segue fa 1 download, solo che ho 1 numero da trasformare in formato accettato da strcat.
Ho fatto di tutto, ma lamero. :help:

void scaricare(char *input)
{
char comando[500];
char* numero;
extern int canale_numero;
char tmp;

tmp= (char)canale_numero;
numero=&tmp;

printf("canale_numero: %d\n\n", canale_numero);
printf("tmp: %c\n\n", tmp);
printf("numero: %s\n\n", numero);
getchar();

// inizializzo la stringa vuota col carattere \0
comando[0]='\0';

strcat(comando, "wget --directory-prefix=canale");
strcat(comando, numero);
strcat(comando, " ");
strcat(comando, input);
printf("Lanciato comando: %s\n\n", comando);
system(comando);
}

Matrixbob
11-01-2007, 23:41
Questa è la :oink: che stampa:
http://img102.imageshack.us/img102/3641/lameroqn6.gif
perchè ho fatto qualche :oink: nel codice.

Probabilmente mi perdo nel casting da INT a CHAR e poi da CHAR a vettore di caratteri. :sob:

kk3z
11-01-2007, 23:47
Ragazzo mio :oink: :) questo proprio è meglio non farlo:
tmp= (char)canale_numero;
numero=&tmp;

Perchè non usi la comodissima sprintf:
char comando[500];
sprintf(comando, "wget --directory-prefix=canale%d %s", canale_numero, input);
system(comando);

Se proprio vuoi trasformare un numero in stringa, puoi usare itoa, non è standard o come cavolo si dice

EDIT: hei lo voglio anche io il carattere faccina :fagiano:

Matrixbob
11-01-2007, 23:55
Non sapevo manco esistesse "SPRINTF", adesso sfoglio il manuale e google.
Intanto infinitamente grazie x la sintassi che mi hai esplicato.

Questa "ITOA" fa da INT a CHAR* ?! :confused:
Sta nelle STDIO.H?!

Come si fa invece da INT a CHAR e da CHAR ad INT?!
---

EDIT: hei lo voglio anche io il carattere faccina :fagiano:
... e beh li c'è anche la I doppio puntata, tanto x mettere i puntini sulle I. :sofico:

Matrixbob
12-01-2007, 00:03
CMQ
sprintf(comando, "wget --directory-prefix=canale%d %s", canale_numero, input);
funziona a bestia!

Si vede chi sa programmare e chi arranca eh :p

trallallero
12-01-2007, 09:15
Questa "ITOA" fa da INT a CHAR* ?! :confused:
Sta nelle STDIO.H?!

Come si fa invece da INT a CHAR e da CHAR ad INT?!

itoa non é ANSI C quindi non ti funziona su tutte le macchine.
Mi ricordo che lo strausavo col Borland turbo C++ ma funzionava solo li, col MS-DOS.
Quindi per conversioni int -> char la migliore (per me) é sprintf.

atoi invece é ANSI e converte da char ad int
esempio int n = atoi("123")

c'é anche atol, da char a long e il C99 ha introdotto atoll, da char a long long.