Ir ao conteúdo

Ajuda em exercicio em linguagem C


rtfarias

Posts recomendados

Postado

Olá pessoal está acontecendo uma coisa nesse programa que eu não consigo entender:

Estou lendo de um arquivo uma data e uma hora (data=aaaammdd hora=hhMMssmmm(mil.segundo) )

e depois vou quebrando essa string em ano, mes, data, hora etc.

e ai uso a função 'atoi', para transformar em inteiro.

Mas o problema é com a variavel 'min_c' fica sem aparecer

por ex:

eu leio 20041023 17'00'46000

e a saida com o printf é 20041023 17'0'460

Eu sei que eu estou lendo zero para "min" mas preciso ler os dois zeros da string.

vejam o programa:

#include<stdio.h>
#include<stdlib.h>

main (){
char dat[8], ano_c[4], mes_c[2], dia_c[2];
char h[10], hora_c[2], min_c[10], seg_c[2], mm_c[3];
char d1[5], d2[5], d3[5], d4[5];
int ano, mes, dia, i;
int hora, min, seg, mm;
FILE * fp;
fp= fopen ("S004_part1.txt","r");
fscanf (fp, "%s %s %f %f %f %f", dat, h, d1, d2, d3, d4);
printf("%s %s", dat, h);

strncpy(ano_c, dat, 4);
ano_c[4] = '\0';
ano=atoi (ano_c);

strncpy(mes_c, dat+4, 2);
mes_c[2] = '\0';
mes=atoi(mes_c);

strncpy(dia_c, dat+6, 2);
dia_c[2] = '\0';
dia= atoi(dia_c);

strncpy(hora_c, h, 2);
hora_c[2] = '\0';
hora= atoi(hora_c);

strncpy(min_c, h+2, 2);
min_c[2] = '\0';
min= atoi(min_c);

strncpy(seg_c, h+4, 2);
seg_c[2] = '\0';
seg= atoi(seg_c);

strncpy(mm_c, h+6, 3);
mm_c[3] = '\0';
mm= atoi(mm_c);

printf("\n%d%d%d %d%d%d%d", ano, mes, dia, hora, min, seg, mm);

printf("\n%s", min_c);/*dei um printf na string pra ver o que estava sendo gravado e só tinha '0' */

getch ();
}

Me parece que está tudo certo com meu código, será que tem alguém experiente ai que consiga me ajudar?

Postado

1º A função 'strncpy' não existe. O correto é 'strcpy'

2º Para usar esta função, faz-se necessário usar a biblioteca 'string.h'

3º A função 'strcpy' aceita 2 parâmetros, não 3.

4º Não use no final do seu código a função 'getch()', use 'system("pause")' ^^

Esperto ter ajudado :lol:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...