Probleminha em C

7 respostas
Rafael_Marques1

seguinte, a ideia do programa é pegar um arquivo posicional, organizar esse arquivo por agencias, e dai o resto ja nao entra em questao...

eu decidi pegar as linhas do arquivo posicional e colocar em uma lista, para depois ordena-la...
mas estou tendo um probleminha. Segue o codigo:

FILE* org_arq(FILE *arq)
{
      char nome[11], endereco[21], agencia[4], conta[8], saldo[11], dec, linha;
      Entrada *x = NULL;
      
      do
      {
        fgets(nome, 10, arq);
        fgets(endereco, 20, arq);
        fgets(agencia, 3, arq);
        fgets(conta, 7, arq);
        fgets(saldo, 10, arq);
        dec = getc(arq);     
        linha = getc(arq);

        x = lu_insereinicio(x, nome, endereco, agencia, conta, saldo, dec);
        
      }while(!feof(arq));
                
}


Entrada *lu_insereinicio(Entrada *plst, char *nome, char *endereco, char *agencia, char *conta, char *saldo, char dec)
{
     Entrada *aux;
     aux = (Entrada*)malloc(sizeof(Entrada));
     aux -> nome[11] = nome[11];
     aux -> endereco[21] = endereco[21];
     aux -> agencia[4] = agencia[4];
     aux -> conta[8] = conta[8];
     aux -> saldo[11] = saldo[11];
     aux -> dec = dec;
     aux -> prox = plst;
     return aux;
}

na funcao org_arq, os valores das variaveis está blza, está lendo tranquilo, mas qndo eu passo pra inserir na lista, é passado o endereco das variaveis (eu acho), e nao o valor.

no debug:
qndo está em org_arq:

nome = "DAVI \o\"

qndo está em inserelista

aux -> nome = "\rð­º\rð­º\rð­"

to perdido aqui tentando achar o q é =x

7 Respostas

rockstorm

Olá amigo…
Este forum é sobre a tecnologia JAVA.

Rafael_Marques1

Índice dos Fóruns » Outras Linguagens

:wink:

J

um exemplo em C++

conta* insere1(conta* con, string nome, int idade, string end, string numero)// Insere inicio

{

      conta* aux;

      aux=new conta;

      aux->nome=nome;

      aux->end=end;

      aux->idade=idade;

      aux->numero=numero;

      aux->prox=con;

      con=aux;

      return con;

}
Rafael_Marques1

mas a questão é que um vetor de char, ou string, a ultima posição fica com \0, pra indicar q acabou a string =x

T

Cebion*, para copiar uma string na outra, use strncpy ou strcpy. No seu caso em particular, acho que é necessário usar strncpy, e não se esquecer de fechar a última posição da string com “\0”. Exemplo:

char nome[12]; // string de 11 posições, mais o \0
char linha[101]; // esta é uma linha de 100 caracteres, onde o nome está na posição 20 (ou seja, a partir do 21o. caracter)

strncpy (nome, linha + 20, sizeof(nome)); 
nome [sizeof(nome) - 1] = '\0';

O sinal de “=” só copia strings em Java (ou em C++ se você estiver usando std::string).

  • Para a influenza A, você precisa de Tamiflu.
T

A dica é: para programar em C, você precisa fazer um pouquinho de lavagem cerebral, e pensar como um programador C. Isso é meio difícil e, na verdade, eu não recomendo isso, principalmente se seu objetivo não é C puro e sim C++.

No caso de C++, você precisa fazer uma outra lavagem cerebral se você for um programador Java.

Rafael_Marques1

e nao é que era isso mesmo!!!

vlw!

tava marcando aqui, procurando pelo em ovo! aiuheiaheioahe

vlw cara :wink:

ps: eu estou estagiando com C puro… aqui no trampo mexe mto com sistema de transações bancárias, IST/Switch, etc… =x

Criado 15 de julho de 2009
Ultima resposta 15 de jul. de 2009
Respostas 7
Participantes 4