-1
Good morning, I want to return a word that is in a file,.
#include <stdio.h>
#include <stdlib.h>
#include<locale.h>
#include<string.h>
int *abrir_arquivo(){
//o cursor ira percorrer as letras do arquivo
int cursor,i;
// Reserva memória que não será desalocada, para armazenar 20 chars
char *palavra = malloc(sizeof(char) * 20);
//O arquivo de palavras que sera lido
FILE *file;
//abrindo o arquivo
file=fopen("Frutas forca.txt", "r");
//se o arquivo for encontrado
i=0;
//Vendo se o arquivo foi encontrado
if(file){
//o cursor ira pegar cada caractere do arquivo e adicionar na variavel palavra
while((cursor=fgetc(file))!=EOF){
palavra[i]=cursor;
i++;
}
// Adiciono um "null terminator", em C ele é interpretado como fim da string
palavra[i]= '\0';
//MOstrando o conteudo do arquivo
printf("%s",palavra);
//fecha o arquivo
fclose(file);
}
return palavra;
}
int main()
{
char *palavraforca;
*palavraforca=abrir_arquivo();
printf("%s",palavraforca);
return 0;
}
but how will I return in main? type:main(){palavraforca=function?
– Lolzeiro
In the same way you return any other value:
char *palavraforca = abrir_arquivo();
– Andre
I’ve changed, and it’s not working, I’ve edited the code with your suggestions,
– Lolzeiro
@Lolzeiro, you did wrong. If you’re going to declare
char *palavraforca;
on one line, and then starting on another line, you should usepalavraforca = abrir_arquivo();
asteriskless.– Andre
vlw Yo, it worked here kkk,was early wanting to do, thank you very much!!
– Lolzeiro
An important detail is that it is not necessary to use dynamic allocation in this case, in which the string size is known at compile time. One possibility is, for example, to declare the function as
void abrir_arquivo(char palavra[], int tamanho)
, delegating the allocation of the chars array to the function caller. He can then choose whether to allocate statically (stack) or dynamically.– Gabriel Faria