Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Oi pessoal sou novo aqui, ficaria muito grato se pudessem me ajudar com meu código.
Eu tô fazendo um programa em C pra ler um arquivo de texto, que é estruturado dessa forma:
[codigo usuario]; [nome] ;[cpf];[telefone] ;[dependente ou filho ou esposa] ;[digito];[codigo dependente]
No momento consigo ler o codigo de usuário e armazenar num vetor, imprime legal.
O problema é o nome, como podem ver existe um monte de espaços entre o nome e o próximo ";" que eu estou usando pra separar as seções do texto.
Com esse código:
#include <stdio.h>
#include <conio.h>
#include <string.h>
main(){
FILE *fp;
char c;
unsigned int //fcod[8], // codigos dos funcionarios
fcpf[11], // cpf do funcionario
ffone[9], // telefone do funcionario
dcod[10][10]; // codigo do dependente
char func[100];
char fcod[8];
char dep[10][100];
/// cod[8]; funcionario; cpf[11]; telefone[15]; dependente[100]; digito[1]; cod[8]
//sec 1 2 3 4 5 6 7
char lastc;
int i=0, sec=1;
printf("\n\nVALOR de SECAO %d\n\n",sec);
fp = fopen("dependentes.txt", "r");
//// tentei inicializar as posições da string assim mas dá erro
/*for(i=0; i<99; i++)
func[i] = "a";while((c = getc(fp) ) != EOF)
{
if (c == 59) // se;
{
puts("achou uma;");
sec+=1;
i = 0;
printf("\nSecao atual: %d\n\n", sec);
continue;
}
if (sec==1)
fcod[i] = c;
if (sec==2)
{
if (c == 32 && lastc == c) /// se houver espaços em branco consecutivos
{
if (getc(fp) != 32)
func[i] = c;
//break;
}
else
{
func[i] = c;
printf("\n-Adicionou = %c\nUltimo c = %c", c, lastc);
}
}
i++;
lastc = c;
}
int ftam=0;
ftam = strlen(func);
printf("\n:: TAM: %d ::\n", ftam);
// gravando codigo do usuario
for (i=0; i<8; i++)
printf("%c",fcod[i]);
printf("\t");
// gravando nome do usuario
for (i=0; i < ftam; i++)
printf("%c",func[i]);fclose(fp);
getch();
}Com o código acima, eu criei um IF pra identificar os espaços em branco "32", e usei a variavel lastc (last char) pra identificar o ultimo caractere q entrou, assim eu comparo, se o char atual for um espaço, e o ultimo char for espaco tbm, ele encerra, mas ao que parece ele adiciona uns simbolos ainda, eu não consegui achar o furo do problema.
Ficaria imensamente grato se puderem me ajudar. Futuramente eu usarei isso pra fazer inserções no banco de dados, por isso tenho q formatar. Valeu.
Carregando comentários...