2016-05-06 13 views
-2

Ich habe einige Probleme beim Schreiben eines Codes, in dem ich eine Dateierweiterung ändern möchte, die in einer Zeichenfolge gespeichert ist. Zum Beispiel Zeichenfolge bla/bla/file.icc Ich möchte geändert werden, bla/bla/file.cmr. Diese Zeichenfolge ist Teil einer Struktur. Ich habe 2 Probleme. Einer ist, dass strcpy gibt diese Botschaft „erwartet Ausdruck vor td_ActDOR und zweite ist in für und geben uns diese Nachricht subscribed value is neither array nor pointerÄndern einer Zeichenfolge aus einer Struktur

Hier ist mein Code:.

#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

[Bitte lesen Sie diese Diskussion darüber, warum nicht der Rückgabewert von 'malloc()' und Familie in 'C' umgewandelt werden soll. (Http://stackoverflow.com/q/605845/2173917). –

+1

'pActDORwrk' ist nicht deklariert –

Antwort

3

in Ihrem Code td_ActDOR ist nicht eine Variable, (es ist eine Art), Obiect ist.

ändern

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

zu

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

Das Gleiche gilt für strlen(td_ActDOR->pDOR_file); auch.

+0

thanks ist dies für die 1. Ausgabe. Hast du einen Ratschlag für den zweiten? –

+0

@AndreiCristian Ich bin verwirrt ... hast du die Änderung gemacht und gelaufen? Ist es immer noch da? –

+0

@AndreiCristian auch, 'pActDORwrk' scheint hier zu fehlen ... –