【问题标题】:Modify a string from a stucture [closed]从结构修改字符串[关闭]
【发布时间】:2016-05-06 07:19:02
【问题描述】:

我在编写代码时遇到了一些问题,我想在其中修改存储在字符串中的文件扩展名。例如,字符串bla/bla/file.icc 我想更改为bla/bla/file.cmr。该字符串是结构的一部分。我有2个问题。一个是strcpy 给出了这条消息“td_ActDOR 之前的预期表达式,第二个是 for 并给出这条消息subscribed value is neither array nor pointer

这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct s_ActDOR
{
    char pDOR_file[86];
}td_ActDOR;


int main(void)
{
    char path[80]="blabla/blabla/aici.icc";
    td_ActDOR *Obiect;
    Obiect = (td_ActDOR *)malloc(sizeof (td_ActDOR));

    strcpy(td_ActDOR->pDOR_file, "blabla/blabla/file.icc");

    int path_lenght=strlen(td_ActDOR->pDOR_file);
    int i;
    char bla[4] = "rmc\0";
    printf("Stringul before: %s\n",path);
    for (i = 0; i < 3; i++)
    {
        Obiect->pDOR_file[path_lenght-(i+1)] = bla[i];
    }
    printf("Stringul after: %s\n",path);
    return 0;
}

【问题讨论】:

标签: c string pointers structure


【解决方案1】:

在您的代码中,td_ActDOR 不是变量,(它是一种类型),Obiect 是。

改变

  strcpy(td_ActDOR->pDOR_file, "blabla/blabla/file.icc");

 strcpy(Obiect->pDOR_file, "blabla/blabla/file.icc");

strlen(td_ActDOR-&gt;pDOR_file); 也是如此。

【讨论】:

  • 谢谢这是第一期。你对第二个有什么建议吗?
  • @AndreiCristian 我很困惑......你做出改变并运行了吗?它还在吗?
  • @AndreiCristian 还有pActDORwrk 似乎在这里不见了...
  • @BLUEPIXY 感谢您的修复。复制粘贴....
  • 所以我运行了更改,在我在这里制作的这个小例子中工作正常。我有一个大的,我正在将此结构的指针传递给我想要修改扩展名的函数,for 循环与此处相同,但不起作用。我现在真的很困惑。
猜你喜欢
  • 2020-06-02
  • 1970-01-01
  • 2015-04-24
  • 2011-12-16
  • 1970-01-01
  • 2022-01-06
  • 1970-01-01
  • 1970-01-01
  • 2018-05-23
相关资源
最近更新 更多