Ir para conteúdo
Fórum Script Brasil
  • 0

Ponteiros,tipos E Etc


Inufelipe

Pergunta

Ola galera do script brasil forum.

Eu estou escrevendo uma header

para manipulação de arquivos...

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

class File{
    private:
        FILE *file;
        int can;
        char *nomef;
    public:
        File(const char *nome){
            int x;
            x = strlen(*nome);
            nomef = (char *)malloc(x * sizeof(char));
            strcpy(*nome,*nomef);
        }

};
int main(){
 File file("tst.txt");
}
Ao compilar ele alega:
file.h: In constructor ‘File::File(const char*)’:
file.h:13: error: invalid conversion from ‘const char’ to ‘const char*’
file.h:13: error:   initializing argument 1 of ‘size_t strlen(const char*)’
file.h:15: error: invalid conversion from ‘const char’ to ‘char*’
file.h:15: error:   initializing argument 1 of ‘char* strcpy(char*, const char*)’
file.h:15: error: invalid conversion from ‘char’ to ‘const char*’
file.h:15: error:   initializing argument 2 of ‘char* strcpy(char*, const char*)’

Os tivpos são diferentes?

Estou escrevendo errado o codigo?

se alguém poder me ajudar...

falous

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

caro amigo,

você já tentou substitui o parametro do construtor por uma variavel em vez de constante??? outro erro que pode está dando é porque o strlen recebe como parametro uma string e não um pontei, ou seja, ele recebe um array de char e não um ponteiro pra char. da mesma forma o strcpy recebe dois arrays e não ponteiros, em alguns compiladores isso que você fez funciona mas em outro n.

tipow o strcpy também pega a segunda string (segundo parametro) e coloca na primeira(primeiro parametro), pelo que eu vi o que você quer é o contrario, você tem que mudar a ordem dos parametros.

mas enfim, tente fazer isso pra ver se pega:

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

class File{
    private:
        FILE *file;
        int can;
        char *nomef;
    public:
        File(char *nome)
        {
            int x;
            x = strlen(nome);
            nomef = (char *)malloc(x * sizeof(char));
            strcpy(nomef,nome);
        }

};
int main(){
File file("tst.txt");
}

se pegar me fala ok???

espero ter ajudado.

abraços

Editado por Rafael Barros
Link para o comentário
Compartilhar em outros sites

  • 0

Deu o mesmo erro!!!

Eu uso o Ubuntu Fest(7.04)

eu atualizei ele pelo o

atualizador do Ubuntu

que é uma estrela laranja

dai ele atualizou o kernel

(eu acho) e dai la no

gerenciador de boot

apareceu mais um Ubuntu

só que agora com o final 16,

mais o normal era com final 15....

O 16 da problema ao rodar

dai eu tenho que escolher o 15....

Talvez isso seja o problema....

Caso for isso algum moderador

pode mover meu tópico.

Falous

Link para o comentário
Compartilhar em outros sites

  • 0

O erro Falha de Segmentacao (core dumped) não tem relacao com o kernel. O que deve estar acontecendo é alguma violacao de endereco de memoria (seus ponteiros apontam para areas de memoria que não estao sob direito de uso do seu programa.

Por exemplo, no codigo que o Rafael colocou no post 2, o strcpy podera (não é certeza pois a gente nunca sabe onde o malloc vai pegar memoria...) gerar uma falha como essa, pois falta espaco para o caracter '\ 0', que marca o fim das strings em C. Voce deveria alocar x + 1 chars para a string.

Link para o comentário
Compartilhar em outros sites

  • 0

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

class File{
    private:
        FILE *file;
        int can;
        char nomef[256];
    public:
        File(char nome[]){
            int x;
            x = strlen(nome);
            strcpy(nome,nomef);
        }

};
int main(){
 File file("tst.txt");
}

Porem mesmo assim(sem usar ponteiros)

acontece o erro!!!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...