2016-05-06 20 views
-2

文字列に格納されているファイル拡張子を変更するコードを書くときに問題が発生します。たとえば、文字列bla/bla/file.iccbla/bla/file.cmrに変更したいと考えています。この文字列は構造体の一部です。私は2つの問題があります。 。一つは、ここで構造体から文字列を変更する

strcpytd_ActDOR前に、」期待される表現を、このメッセージを与え、二番目がためであるとのにこのメッセージ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

['malloc()'と 'C 'のファミリの戻り値をキャストしない理由についてのこのディスカッションを参照してください。](http://stackoverflow.com/q/605845/2173917)。 –

+1

'pActDORwrk'は宣言されていません –

答えて

3

td_ActDORは、変数ではありません(それがタイプだ)、Obiectがある。

変更

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

~

​​

strlen(td_ActDOR->pDOR_file);も同じである。

+0

これは第1号のためのものです。 2番目のアドバイスはありますか? –

+0

@AndreiCristian私は混乱しています...あなたは変更を加えて実行しましたか?まだそこにいますか? –

+0

@AndreiCristianまた、 'pActDORwrk'はここでは見当たりません。 –

関連する問題