Per qualche ragione il mio programma C si rifiuta di convertire elementi di argv in interi, e non riesco a capire perché.Il char non sta convertendo in int
int main(int argc, char *argv[])
{
fprintf(stdout, "%s\n", argv[1]);
//Make conversions to int
int bufferquesize = (int)argv[1] - '0';
fprintf(stdout, "%d\n", bufferquesize);
}
E questo è l'uscita quando si esegue ./test 50:
-1076276207
Ho provato a rimuovere la (int), gettando sia a * un & tra (int) e argv [1] - il primo mi ha dato un 5 ma non 50, ma quest'ultimo mi ha dato un risultato simile a quello sopra. Rimozione dell'operazione - '0' non aiuta molto. Ho anche provato a fare un char first = argv [1] e usare prima la conversione invece, e questo abbastanza stranamente mi ha dato un 17 indipendentemente dall'input.
Sono estremamente confuso. Cosa sta succedendo?
Penso che potresti voler dire 'argv [1] [0]' (type is 'char') <- primo carattere del primo argomento (dopo il nome exec). Certo, non ci sono ancora controlli e ci sono modi migliori.Non provare a "scartare un errore" (come 'argv [1]' è digitato come 'char *') perché spesso non funziona :-) –