c - 字符串的动态内存分配

标签 c dynamic-memory-allocation

如何为字符串动态分配内存?

我想将一个文本文件作为输入,并想将文件中的字符存储为一个字符串。

首先我计算文本文件中的字符数,然后根据这个大小动态分配字符串,然后将文本复制到字符串中。

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/

相关文章:

c - 将双指针和指针传递给函数时出现段错误

c - 随机写入输出文件的顺序?

c - 单向链表删除最后一个元素

c++ - 为 PlayerID 分配动态内存

c - Beagle 骨 ADC 读取值

c - 如何使用 C 将两字节整数作为十六进制写入二进制文件

具有指针字段的结构的连续内存分配

c++ - 使用 realloc 增加大小与创建更大的动态数组

c - 如何检测分配内存块的位置?

c++ - C++中二维动态内存分配数组中的免费分配内存