função de ponteiro de string

1. função de ponteiro de string

Victor Guimarães Nunes
nunesvictor

(usa Ubuntu)

Enviado em 10/10/2007 - 22:38h

eu quero que uma função leia um arquivo e retorne o conteúdo do arquivo, como faço?

char *getfilec() {
FILE *arquivo;
char *conteudo;
int i=0;
arquivo = fopen("/tmp/arquivo","r");
while(!feof(arquivo)) {
conteudo[i++] = fgetc(arquivo)
conteudo[i] = '{TTEXTO}';
fclose(arquivo);
return(conteudo);
}

int main() {
char *texto;
texto = getfilec();
}
mas a função causa a danada da Segmentation Fault

como faço?!

abraços!


  


2. Re: função de ponteiro de string

Rodrigo Chaves
stilldre

(usa Funtoo)

Enviado em 10/10/2007 - 23:05h

cadê o protótipo da função? posta o arquivo completo... falta algum include de alguma biblioteca?


3. caraa

Victor Guimarães Nunes
nunesvictor

(usa Ubuntu)

Enviado em 10/10/2007 - 23:06h

eh um barra zero, num sei pq tah aparecendo isso nau

=S

vou tentar retornar antes de fechar o arquivo


4. tah aki

Victor Guimarães Nunes
nunesvictor

(usa Ubuntu)

Enviado em 10/10/2007 - 23:14h

#include <stdio.h>

char *getfilec() {
FILE *arquivo;
char *conteudo;
int i=0;
arquivo = fopen("/tmp/arquivo","r");
while(!feof(arquivo)) {
conteudo[i++] = fgetc(arquivo);
conteudo[i] = '{TTEXTO}';
return(conteudo);
fclose(arquivo);
}

int main() {
char *texto;
texto = getfilec();
}



5. Re: função de ponteiro de string

Rodrigo Chaves
stilldre

(usa Funtoo)

Enviado em 15/10/2007 - 12:36h

você tá usando diversas funções não inicializadas... todas elas estão na stdio? se não você está fazendo chamadas recursivas as funções... procure a documentação da biblioteca que está utilizando para saber quais delas precisam ser inicializadas.


6. Re: função de ponteiro de string

Reis
gnu_reis

(usa Slackware)

Enviado em 15/10/2007 - 15:19h

Cara, eu estou vendo se consigo te ajudar, mas de inicio, tome cuidado, pois no código que vc postou está faltando fechar chave em algum lugar na função getfilec e a função fclose está depois da função return, o que acarretará no não fechamento do arquivo que foi aberto.


7. beleza

Victor Guimarães Nunes
nunesvictor

(usa Ubuntu)

Enviado em 15/10/2007 - 15:27h

posta ae se condeguir

abrass


8. Re: função de ponteiro de string

Paulo Marcelo Martins Toledo
paulomar

(usa Fedora)

Enviado em 15/10/2007 - 16:46h

Colega, vc gostaria de retornar o conteúdo todo do arquivo ou caractere por caractere?
Pois no fonte que mandou, retorna caractere á caractere .



9. Re: função de ponteiro de string

Francisco Souza
franciscosouza

(usa Ubuntu)

Enviado em 15/10/2007 - 18:23h

Vitor, você declarou o ponteiro conteudo, mas não alocou nenhum espaço de memória para ele.

Segmentation fault para o resto da vida isso.

Use funções para alocar (malloc ou calloc, da biblioteca stdlib.h) ou ainda pode alocar de forma estática - char conteudo[100], por exemplo).


10. Re: função de ponteiro de string

Daniel
code0

(usa Slackware)

Enviado em 15/10/2007 - 19:04h

#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <fnttl.h>

#define FILE "arquivo.txt"

int main(void) {
struct stat stt;
int fd;
char *bytes;

if(stat(FILE,&stt)==-1) {
perror("stat");
return -1;
}
bytes=malloc(stt.off_t+1);
fd=open(FILE,O_RDONLY);
if(fd==-1 || bytes==null) {
perror("ops");
return -1;
}
bzero(bytes,sizeof(bytes));
read(fd,bytes,stt.off_t);
close(fd);
// arquivo lido na variavel char *bytes
// Apos a manipulacao dos dados, nao se esqueca do free
free(bytes);

return 0;
}

Eu escrevi isso direto aqui, creio que esteja Ok.
Explicacoes:
stat - recupera o status de um arquivo
struct stat - estrutura necessaria pela funcao stat
stt.off_t - tamanho total do arquivo, em bytes
malloc - aloca memoria
free - libera memoria alocada
As funcoes open, stat e read e close sao POSIX, o malloc e free sao libc.
[]'s



11. psé cara

Victor Guimarães Nunes
nunesvictor

(usa Ubuntu)

Enviado em 15/10/2007 - 22:35h

to com problemas pa alocar msm...
num sei como usar o malloc e o free

quanto ao retorno da função, como seria?!

char *getfilec()?




12. code0

Victor Guimarães Nunes
nunesvictor

(usa Ubuntu)

Enviado em 15/10/2007 - 22:38h

c me da um tempim pa analizar seu código?

nau costumo usar open e sim fopen e algumas diferencias na programação, depois posto uma resposta



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts