从结构中修改字符串

时间:2016-05-06 07:19:03

标签: c string pointers structure

我在编写代码时遇到一些问题,我希望修改存储在字符串中的文件扩展名。例如字符串bla/bla/file.icc我希望将其更改为bla/bla/file.cmr。这个字符串是一个结构的一部分。我有2个问题。一个是strcpy给出了这条消息"在td_ActDOR之前预期的表达式,第二个是for 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;
}

1 个答案:

答案 0 :(得分:3)

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

更改

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

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

同样适用于strlen(td_ActDOR->pDOR_file);