Hallo,
Ik moet in c een bestand lezen. Het kan een tekstbestand zijn of een binair bestand, dat weet ik alleen niet van tevoren. Nu heb ik de volgende code geschreven die eigenlijk alleen voor het lezen van binaire bestanden is.
[CPP]
#include <stdio.h>
char *readFile(const char *filename){
char *buffer = NULL;
if(filename){
FILE *fp = fopen(filename, "rb");
if(fp){
fseek(fp, 0, SEEK_END);
size_t buffer_size = ftell(fp);
if(buffer_size){
rewind(fp);
buffer = (char*)malloc(sizeof(char) * (buffer_size + 1));
size_t chars_read = fread(buffer, sizeof(char), buffer_size, fp);
if(chars_read != buffer_size){
free(buffer);
buffer = NULL;
}
else buffer[buffer_size] = 0;
}
}
fclose(fp);
}
return buffer;
}
int main (int argc, char *argv[])
{
char *buffer = readFile("combined.scs");
if(buffer){
printf("%s", buffer);
free(buffer);
}
getch();
return 0;
}
[/CPP]
Toch blijkt dit ook voor tekstbestanden te werken(ik gebruik windows, en als compiler mingw gcc)
De vraag is dus: Kan ik deze code veilig gebruiken voor zowel binaire bestanden als textbestanden? En met veilig bedoel ik voor elke compiler, onder linux, windows, mac.
Zo niet, moet ik dan voor textbestanden een andere methode maken om deze in te lezen?
Ik moet in c een bestand lezen. Het kan een tekstbestand zijn of een binair bestand, dat weet ik alleen niet van tevoren. Nu heb ik de volgende code geschreven die eigenlijk alleen voor het lezen van binaire bestanden is.
[CPP]
#include <stdio.h>
char *readFile(const char *filename){
char *buffer = NULL;
if(filename){
FILE *fp = fopen(filename, "rb");
if(fp){
fseek(fp, 0, SEEK_END);
size_t buffer_size = ftell(fp);
if(buffer_size){
rewind(fp);
buffer = (char*)malloc(sizeof(char) * (buffer_size + 1));
size_t chars_read = fread(buffer, sizeof(char), buffer_size, fp);
if(chars_read != buffer_size){
free(buffer);
buffer = NULL;
}
else buffer[buffer_size] = 0;
}
}
fclose(fp);
}
return buffer;
}
int main (int argc, char *argv[])
{
char *buffer = readFile("combined.scs");
if(buffer){
printf("%s", buffer);
free(buffer);
}
getch();
return 0;
}
[/CPP]
Toch blijkt dit ook voor tekstbestanden te werken(ik gebruik windows, en als compiler mingw gcc)
De vraag is dus: Kan ik deze code veilig gebruiken voor zowel binaire bestanden als textbestanden? En met veilig bedoel ik voor elke compiler, onder linux, windows, mac.
Zo niet, moet ik dan voor textbestanden een andere methode maken om deze in te lezen?