Conversione da stringa ad int

di Anonimizzato14486 il
5 risposte
Ragazzi ho un problema. Dovrei prendere dei numeri dalla linea di comando ed inserirli in un vettore di interi. Però ho un problema con la conversione da stringa ad intero. Questo è il mio codice e non funziona! Qualcuno puo illuminarmi?
#include <stdio.h>
#include <stdlib.h>
#define TRUE 1
#define FALSE 0


int main(int argc, char *argv[]){
	
	int i, flag = FALSE;
	int vett[argc];
	for(i=0;i<argc;i++){
		vett[i] = (int) argv[i];
	}
	
	int ctrl;
	printf("Inserisci numero controllo: ");
	scanf("%d",&ctrl);
	
	for(i=0;i<argc-1;i++){
		if(vett[i]== ctrl){
			printf("L'intero e' presente nella posizione %d",i);
			flag = TRUE;
		}
	}
	
	if(!flag) printf("L'intero non e' presente");
	return 0;
}

5 Risposte

  • Ovviamente non puoi scrivere

    vett = (int) argv;

    Usa la funzione atoi
  • In alternativa a atoi puoi usare anche la funzione strtol che converte appunto una stringa in un intero.

    la sintassi è questa:
    int *p;
    vett=strtol(argv,&p,0);

    questa funzione imposta errno!=0 se ci sono errori (devi includere #include <errno.h>) e inoltre in *p troverai la parte della stringa che la funzione non può convertire in intero (delle lettere ad esempio) e sapendo che deve contenere almeno '\0' ossia il terminatore di stringa, puoi controllare se la funzione è stata eseguita correttamente o no.
  • Grazie mille! E se invece volessi convertirti a float?
  • Atof()

  • viky994 ha scritto:


    Grazie mille! E se invece volessi convertirti a float?
    Per il float basta solo un po' di iniziativa ...
Devi accedere o registrarti per scrivere nel forum
5 risposte