2010-02-11 4 views
1

J'ai fini par faire comme ça,Initialiser variable tableau dans la structure

struct init 
{ 
    CHAR Name[65]; 
}; 

void main() 
{ 
    init i; 

    char* _Name = "Name"; 

    int _int = 0; 

    while (_Name[_int] != NULL) 
    { 
     i.Name[_int] = _Name[_int]; 
     _int++; 
    } 
} 
+0

donc, quelle est la question? – erelender

+0

est-ce ainsi que vous l'intiez? – cpx

+3

En C++ main() doit retourner un int, et des noms comme _Name réservé à l'utilisation de l'implémentation C++. –

Répondre

5

Donnez votre structure, un constructeur:

struct init 
{ 
    char Name[65]; 
    init(const char * s) { 
    strcpy(Name, s); 
    } 
}; 

Maintenant, vous pouvez dire:

init it("fred"); 

Même sans un constructeur, vous pouvez initialiser:

init it = { "fred" }; 
+1

Upvoted mais je serais plus heureux avec strncpy :) – Manuel

+0

+1, j'ai aimé l'idée de constructeur. – cpx

2

En C++, un struct peut avoir un constructeur, tout comme une classe. Déplacez le code d'initialisation vers le constructeur. Pensez également à utiliser une chaîne std :: string au lieu du tableau char.

struct init 
{ 
    std::string name; 

    init (const std::string &n) : name (n) 
    { 
    } 
}; 
+0

J'aimerais pouvoir le faire, mais c'est l'une des structures d'API définies avec lesquelles je travaillais. – cpx

+4

@ Dave17 Pourquoi ne l'avez-vous pas précisé dans votre question? Pourquoi avons-nous toujours besoin d'obtenir des informations sur vous? –

+0

je suis désolé, ne se produira pas. – cpx

2

Vous pouvez également utiliser strcpy() pour copier vos données de chaîne dans le tableau de caractères.

strcpy(i.Name, "Name"); 
Questions connexes