我试图读取一个包含10行不同长度(不超过349个字符)的文件,并将它们存储在动态分配的数组中,以便以后能够对它们进行操作。下面的代码给了我一个“警告:传递参数1的–strcpy–makes pointer from integer without a cast”消息。
我在这里做错了什么?我的逻辑是,地址应该是指向指针数组的指针,数组中的每个指针指向字符串中的一行,我将尝试使用该行的strcpy指向该点。

    char buffer[350];
    char** addresses;
    int i = 0;

    *addresses = malloc(sizeof(char*)*10); /* Let's start off with 10 addresses  */

    while(fgets(buffer, sizeof(buffer), stdin) != NULL)
    {
            strcpy(*addresses[i],buffer);
            i++;
    }

最佳答案

你有几个问题:
语法:
使用

strcpy(addresses[i],buffer);

而不是
strcpy(*addresses[i],buffer);

内存:
您需要为addresses[i]分配内存,然后才能将buffer的内容复制到它。
在调用addresses[i]之前添加一行以分配strcpy的内存。
addresses[i] = malloc(sizeof(buffer));

关于c - 从stdin动态分配行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29465594/

10-10 16:53