La funcion atoi no me funciona...

elotroyo669
19 de Abril del 2005
Hola, buenos dias.

He buscado en este foro sobre la función atoi, y si por ejemplo tengo una variable llamada car que es un char y otra llamada num que es un int, deberia poner num=atoi(car) para que en num me pusiera el valor del caracter que esta dentro de car (por ejemplo "3"), no?

Bueno, mejor les copio el trozo de programa...:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<windows.h>
void main()
{
FILE *f1;
int num, cont=0, cont2=0, files=0;
char fitxer[20], car;
printf("Escribe el fichero del retrato robot: ");
scanf("%s",&fitxer);
f1=fopen(fitxer,"r");
while(files!=5)
{
fscanf(f1,"%c",&car);
if(car=='n')
{
printf("n");
files++;
}
else
{
num=atoi(car);
fscanf(f1,"%c",&car);
while(cont!=num)
{
printf("%c",car);
cont++;
}
cont=0;
}
}
fclose(f1);
}

Pues en la linea del "num=atoi(car)" me da el error: 'atoi' : cannot convert parameter 1 from 'char' to 'const char *'

Pueden arientarme un poco y ayudarme a solucionar este problema??

Muchas gracias.

Noel Solw
19 de Abril del 2005
atoi transforma un string, es decir una variable de tipo char *str o char a[N] a un numero entero.
Tu la estas aplicando a una variable de tipo char, y eso no puede ser.
Entre parentesis, las variables de tipo char, son numeros enteros, en realidad, lo unico que tendrias que haces es int val = a-'0';

elotroyo669
19 de Abril del 2005
No he entendido muy bien lo ultimo que mehas dicho de "int val = a-'0';". Donde tengo que ponerlo? Que variables son?

Segon dices, lo de mi programa tiene que ser un string, y no un char, entonces si declaro el car como car[1] seria un string de longitud 1, y luego al usar la variable en el programa deberia poner car[0] para usar el valor de dentro de la variable, peor me da le mismo error....

Gracias por la ayuda

hhcj
19 de Abril del 2005
es como tienes puesto en la respuesta en el momento q pongas car[1]o car[10],lo q tu kieras poner ya te funcionara