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);
}
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);
}