Dúvidas ANSI-C

jopabasa

Membro
Boa tarde a todos os membros e, desde já, votos de um excelente 2007 a título individual e para o próprio forum.
Sou novato na linguagem C e tenho algumas dificuldades em entender os caprichos das strings. Por ex., no código seguinte, utilizo o "sprintf" para converter inteiros (datas) em strings (não posso utilizar o "itoa", pq n é ansi-c). Os 2 primeiros "sprintf", os que trabalham com limini e limfim já funcionam bem, mas os 2 últimos (que trabalham com autini e autfim) dão barraca: ao executar o 4º baralha o resultado do 3º. Alguma alma bondosa e esclarecida me pode dizer o que estou a fazer mal? Obrigado.

#define MAXAUT 1000
struct stdata
{
int ano;
int mes;
int dia;
};
struct st4
{
int numero;
struct stdata inicio;
struct stdata fim;
int responsavel;
char descricao[30];
int pessoal[30];
int grupos[10];
} autorizacao[MAXAUT];
int main()
{
int i;
struct stdata dti,dtf;
char autini[8],autfim[8],limini[9],limfim[9];
printf("Data.. (dd mm aaaa): ");
scanf("%i %i %i",&dtf.dia, &dtf.mes, &dtf.ano);
sprintf(limfim,"%4i%2i%2i",dtf.ano,dtf.mes,dtf.dia);
for (i=0;i<8;i++)
if (limfim==' ') limfim='0';
for (i=0;i<MAXAUT;i++)
{
if (autorizacao.numero!=0)
{
sprintf(autini,"%4i%2i%2i",autorizacao.inicio.ano,autorizacao.inicio.mes,autorizacao.inicio.dia);
for (i=0;i<8;i++){
if (autini==' ') autini='0';}
sprintf(autfim,"%4i%2i%2i",autorizacao.fim.ano,autorizacao.fim.mes,autorizacao.fim.dia);
for (i=0;i<8;i++){
if (autfim==' ') autfim='0';}
}
{
return (0);
}
 
Código:
char* itoa(int val, int base){
		static char buf[32] = {0};
		int i = 30;
		for(; val && i ; --i, val /= base)
			buf[i] = "0123456789abcdef"[val % base];
		return &buf[i+1];
	}


usa esta , é ansi c compliant...


/ing
 
Funciona, sim senhor! :001:

Agora resta-me compreendê-la...
Vou já tratar disso, se tiver alguma dúvida volto a incomodar!

Obrigado pela tua disponibilidade e rápida resposta inginheiiro.
 
Back
Topo