如何为字符串动态分配内存?
我想将一个文本文件作为输入,并想将文件中的字符存储为一个字符串。
首先我计算文本文件中的字符数,然后根据这个大小动态分配字符串,然后将文本复制到字符串中。
main()
{
int count = 0; /* number of characters seen */
FILE *in_file; /* input file */
/* character or EOF flag from input */
int ch;
in_file = fopen("TMCP.txt", "r");
if (in_file == NULL) {
printf("Cannot open %s\n", "FILE_NAME");
exit(8);
}
while (1)
{
ch = fgetc(in_file);
if (ch == EOF)
break;
++count;
}
printf("Number of characters is %d\n",
count);
char *buffer=(char*)malloc(count*(sizeof(char)));
}
最佳答案
这是一个糟糕的解决方案。您可以使用多种方法确定文件的大小(搜索 tell
文件大小,尤其是 fstat
),您可以只使用 mmap
将文件直接写入内存,为您提供缓冲区。
关于c - 字符串的动态内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29192152/