我试图读取一个包含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/