Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

fo_11

Duvida utilizar realloc

Mensagens Recomendadas

fo_11

Antes de olharem para o programa queria só dizer que ele está ainda com muitos problemas.

A minha duvida é como é que faço uma especie de reset a uma string, isto é, eu quero que fique de novo como ela está na inicialização.

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

int main()
{
    char *str=NULL,nome[20],ch,s[100];
    FILE *fp;
    int contador=0,flag=0;
    int num;
    printf("Nome ficheiro:");
    gets(nome);
    
    if((fp=fopen(nome,"r"))==NULL)
     printf("Nao foi possivel aceder ao ficheiro");
    
    while((ch=fgetc(fp))!=EOF)
      {if(ch==';')
        {flag++;
         if(flag%2==0)
          {num=atoi(str);
           //preciso de fazer uma especie de reset à string str no tamanho e na informacao contida
            
          }
        
         else
          {strcpy(s,str);
          //preciso de fazer uma especie de reset à string str no tamanho e na informacao contida
           
          }
        }
       str=(char*)realloc(str,(++contador)*sizeof(char));
       str[contador-1]=ch;
       s[100]='\0';
         
        
      }
    puts(s);
    printf("%d",num);
    
    system("pause");
}
      

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Baderous

Fazes um strcpy com um espaço vazio.

Fazer reset a uma string não é colocar lá um espaço vazio, porque na verdade a string continua a conter lá informação e o seu tamanho passa a ser 1!

Fazer reset consiste em colocar um '\0' na primeira posição. (supondo que por "reset" se entende apagar toda a informação existente na string)

No contexto deste problema, não consegui perceber se "fique de novo como ela está na inicialização." se refere a colocar str a NULL, mas vou supor que sim. Nesse caso, tens de fazer free à memória anteriormente alocada. Caso não seja isso então é a solução do '\0' que já falei.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.