Posso usar fget no EP?

Posso usar fget no EP?

por Andre Lopes da Silva -
Número de respostas: 5

Bom, eu havia feito a pergunta anterior aqui no fórum e depois perguntei pessoalmente ao professor e ele me sugeriu que eu procurasse algo na ajuda do C. Eu encontrei uma função chamada fget que retorna um char * e faz quase certo o que eu queria fazer. Posso usá-la no EP?

char *fgets(char *str, int num, FILE *fp);

"The fget() function reads characters from the file associated with fp into a string pointed to by str until num-1 characters have been read, a newline character is encountered, or the end of

the file is reached. The string is null-terminated and the newline character is retained. The function returns str if successful and a null pointer if an error occurs."

Em resposta à Andre Lopes da Silva

Re: Posso usar fget no EP?

por Andre Lopes da Silva -

está sim, eu fiz um testezinho aqui. acho que ela pertence ao grupo das fscanf e fprintf e uma outra lá que não lembro.

O que essa função faz: recebe um ponteiro de char, um número e um arquivo, lê n-1 caracteres ou até o '\n' da linha e devolve um ponteiro de char com a string alocada (retorna NULL se for EOF)

o detalhe é que ela aloca dinamicamente o espaço para a string lida, só que o final da string (caso o \n ocorra antes dos n-1 caracteres) é '\n' '\0'. Então para o EP precisa, antes de mandar a string lida assim, que você troque esse '\n' por '\0', ou modifique sua funcao de conversão para que ela aceite o \n na string.

Em resposta à Andre Lopes da Silva

Re: Posso usar fget no EP?

por Carlos Hitoshi Morimoto -
e qual é o problema de usar o código que vimos em aula?
ht

Em resposta à Carlos Hitoshi Morimoto

Re: Posso usar fget no EP?

por Andre Lopes da Silva -

O problema não era nenhum professor, hehehe. É que eu havia perguntado e o senhor me sugeriu procurar nas funcoes da string.h e eu achei interessante essa função.

Mas não se preocupe que eu acabei usando o modo tradicional mesmo, pois o fgets é tão bom que ele lia o primeiro \n depois do 'e' e aí eu precisava ler duas vezes. então para o código não ficar feio, usei o método clássico mesmo.

Mas achei uma função interessante, ela lê a linha todinha e já coloca numa string.

outra coisa estranha dessa funcao... precisa de um malloc qualquer coisa para o char*, não entendi até agora porque, já que ela atropela o tamanho e cria do mesmo jeito.