我想知道如何声明存储的确切大小C,如果我使用array
或做内存分配,如malloc
,他们都需要事先决定的大小。在这种情况下,我会宣布一个非常大的尺寸来防止溢出,但它仍然有可能发生。如何在C中声明足够大小的缓冲区?
例如
如果我要拆分文本文件的话,我需要声明一个char **
存储串词,但我无法知道有多少的话会被拆分?
如果我想将文件内容读取到一个数组
我需要声明一个大的缓存来存储
buffer = malloc(sizeof(char)*1000);
任何更好的或正确的解决方案?谢谢
#include <stdio.h>
#include <stdlib.h>
void read_chars(char * file_name ,char * buffer);
int main(int argc ,char * argv[])
{
char * buffer ;
buffer = malloc(sizeof(char)*1000);
read_chars(argv[1],buffer);
printf("%s",buffer);
}
void read_chars(char * file_name ,char * buffer)
{
FILE * input_file ;
input_file = fopen(file_name,"r");
int i = 0;
char ch;
while((ch = fgetc(input_file)) != EOF)
{
*(buffer+i) = ch;
i++;
}
*(buffer+i) = '\0';
fclose(input_file);
}
使用realloc的? http://www.cplusplus.com/reference/cstdlib/realloc/ – this
调查realloc。 http://linux.die.net/man/3/realloc – Alec
你检查文件大小。 – BLUEPIXY