Leia o conteúdo do arquivo com tamanho desconhecido
Eu quero processar o conteúdo de um arquivo de configuração. O arquivo de configuração pode ter qualquer tamanho. Estou recebendo um erro de barramento, após a interrupção do programa, quando executo o seguinte código:
FILE *fp;
struct stat st;
char *buffer;
fp = fopen(CONFIG_FILE, "r");
if (fp == NULL) {
// error handling and cleanup omitted for brevity
}
fstat(fileno(fp), &st);
fread(buffer, sizeof(char), st.st_size, fp);
fprintf(stderr, "%s\n", *buffer);
fclose(fp);
Li que um erro de barramento pode ser causado por um estouro de buffer. Tenho certeza de que estou recebendo um estouro de buffer com o meuchar *buffer
. Mas então,como posso especificar o tamanho do buffer em tempo de execuçã
EDITA - O erro do barramento foi causado pela minha preguiça de codificar1
na chamada falsa. O exemplo de código foi atualizado para corrigir isso, usandosizeof(char)
em vez de