【问题标题】:How to copy a string into another string (char **) in a structure with memcpy?如何使用 memcpy 将字符串复制到结构中的另一个字符串(char **)?
【发布时间】:2015-11-19 18:47:47
【问题描述】:
struct orange_t {

    short size;
    Month expirationMonth;
    char** foodCompanies;
    int maxNumberOfFoodCompanies;
    int sellingPrice;
};

memcpy(orange->foodCompanies,foodCompany,sizeof(strlen(foodCompany)));
printf("%s %s",orange->foodCompanies[0],foodCompany);

我的问题。我真的不知道如何正确访问 foodComapnies 中橙色的第一个单词,第二个等等......

什么是正确的语法和正确的方法? 我想把几个foodComapny写成orange->foodCompanies,每个foodComapny在字符串数组的另一个地方。

【问题讨论】:

  • 上下文太少了,但是你试过orange->foodCompanies = foodCompany吗? sizeof(strlen(foodCompany)) 是错误的,是 4 还是 8,这取决于您系统上的 size_t 是什么。

标签: c arrays pointers data-structures struct


【解决方案1】:
memcpy(orange->foodCompanies,foodCompany,sizeof(strlen(foodCompany)));

错了。 sizeof(strlen...) 告诉你一个数字有多大——没用。

我假设 foodCompanies 是一个名称数组,并且您想将 foodCompany 添加到该数组中。您没有显示该数组是如何设置的(很重要)。我会假设它没有设置

orange->foodCompanies = malloc(sizeof(char*))// array holds one entry
orange->foodCompanies[0] = strdup(foodCompany); 

要添加另一个条目,您需要重新分配或使原来的 malloc 更大

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    • 2015-02-05
    • 2012-05-09
    • 1970-01-01
    相关资源
    最近更新 更多