Поскольку это, очевидно, не домашнее задание, вот пример кода того, как я это сделаю.Я просто выделяю огромный блок памяти для всего файла, так как в конечном итоге вы все равно прочтете все это, но если вы имеете дело с большими файлами, обычно лучше обрабатывать их строкой за раз.1001 *
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
// first, get the name of the file as an argument
if (argc != 2) {
printf("SYNTAX: %s <input file>\n", argv[0]);
return -1;
}
// open the file
FILE* fp = fopen(argv[1], "r");
if (fp == NULL) {
printf("ERROR: couldn't open file\n");
return -2;
}
// seek to the end to get the length
// you may want to do some error-checking here
fseek(fp, 0, SEEK_END);
long length = ftell(fp);
// we need to seek back to the start so we can read from it
fseek(fp, 0, SEEK_SET);
// allocate a block of memory for this thing
// the +1 is for the nul-terminator
char* buffer = malloc((length + 1) * sizeof(char));
if (buffer == NULL) {
printf("ERROR: not enough memory to read file\n");
return -3;
}
// now for the meat. read in the file chunk by chunk till we're done
long offset = 0;
while (!feof(fp) && offset < length) {
printf("reading from offset %d...\n", offset);
offset += fread(buffer + offset, sizeof(char), length-offset, fp);
}
// buffer now contains your file
// but if we're going to print it, we should nul-terminate it
buffer[offset] = '\0';
printf("%s", buffer);
// always close your file pointer
fclose(fp);
return 0;
}
Вот так, я давно не писал C-код.Надеюсь, что люди будут вносить полезные исправления / уведомления о серьезных проблемах.:)