Inufelipe Postado Maio 28, 2007 Denunciar Share Postado Maio 28, 2007 Ola galera do script brasil forum.Eu estou escrevendo uma headerpara 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rafael Barros Postado Maio 28, 2007 Denunciar Share Postado Maio 28, 2007 (editado) 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 Maio 28, 2007 por Rafael Barros Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Inufelipe Postado Maio 28, 2007 Autor Denunciar Share Postado Maio 28, 2007 Falha de segmentação (core dumped)Isso foi o que apareceu na hora de Executar....falous Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rafael Barros Postado Maio 29, 2007 Denunciar Share Postado Maio 29, 2007 não sei o que esse erro significa, mas tenta substituir todos os pronteiros de char por um array de char e vê se pega ok??? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Inufelipe Postado Maio 30, 2007 Autor Denunciar Share Postado Maio 30, 2007 Deu o mesmo erro!!!Eu uso o Ubuntu Fest(7.04)eu atualizei ele pelo oatualizador do Ubuntuque é uma estrela laranjadai ele atualizou o kernel(eu acho) e dai la nogerenciador de bootapareceu mais um Ubuntusó que agora com o final 16,mais o normal era com final 15....O 16 da problema ao rodardai eu tenho que escolher o 15....Talvez isso seja o problema....Caso for isso algum moderadorpode mover meu tópico.Falous Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonas de Abreu Postado Maio 30, 2007 Denunciar Share Postado Maio 30, 2007 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Inufelipe Postado Maio 30, 2007 Autor Denunciar Share Postado Maio 30, 2007 #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!!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rafael Barros Postado Junho 4, 2007 Denunciar Share Postado Junho 4, 2007 cara,strcpy num é assim, o primeiro parametro é que vai receber o segundo, então tente:strcpy(nomef,nome);falow Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Inufelipe
Ola galera do script brasil forum.
Eu estou escrevendo uma header
para manipulação de arquivos...
Ao compilar ele alega: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
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.