in struct array füllen



  • #include <stdio.h>
    void main(void)
    {
    struct datensatz  
    { 
    char Name[50]; 
    char Vorname[50];  
    char Strassenname[50];  
    char Hausnummer[50]; 
    char Postleitzahl[50];  
    char Ort[50];  
    char Telefonnummer[50];
    }zugriff;
    
    zugriff.Name="Hans";
    
    printf("Name: %s",zugriff.Name);
    }
    

    wieso klapt das so net
    bzw wie kann ich die array´s in struct am bessten füllen?

    mit pointer hab i es scho hinbekommen... aber mit array´s klapt es irgendwie net 😕



  • hat mit struct nix zu tun, es geht einfach um arrays:
    schau dir mal strcpy an



  • kann es sein so wie ich auf die array´s zugegrieffen hab das man so nur jeweils ein feld füllen kann?



  • kllow schrieb:

    kann es sein so wie ich auf die array´s zugegrieffen hab das man so nur jeweils ein feld füllen kann?

    😕 Du meinst:

    zugriff.Name[0] = 'H';
    zugriff.Name[1] = 'a';
    ...
    

    Ja?
    Also die Lösung von ShadeOfMine ist schon ganz richtig:

    strcpy (zugriff.Name, "Hans");
    

    Warum man im einzelnen jetzt nicht einfach zugriff.Name = "Hans" schreiben kann, weiß ich nicht.

    MfG, the flyingCoder.



  • PS: Es kann sein, dass du <string.h> einbinden musst.



  • früher in Pascal programmiert, was?
    Du musst dir vorstellen, dass .Name nichts anderes ist als ein Pointer.
    Natürlich beschwert sich der Compiler, wenn du nem pointer ne const string zuweist.



  • gh0st124 schrieb:

    früher in Pascal programmiert, was?

    😃

    EDIT bzw. PS:

    gh0st124 schrieb:

    Du musst dir vorstellen, dass .Name nichts anderes ist als ein Pointer.
    Natürlich beschwert sich der Compiler, wenn du nem pointer ne const string zuweist.

    #include <stdio.h>
    
    int main ()
    {
    	char * string1;
    
    	string1 = "Bla";
    	puts (string1);
    
    	return 0;
    }
    

    funktioniert aber. (Lasse mich gerne belehren ...)



  • ja mit pointer hab i es auch scho hinbekommen
    hab mich nur gewundert weil in dem tut wo ich les noch nix bezüglich dem strcpy drin stand und i sollte nun die array´s füllen.
    und ala
    zugriff.Name[0] = 'H';
    zugriff.Name[1] = 'a';

    war es mir zu assi
    deswegen hab i ja nachgefragt
    thx for antworten



  • flyingCoder schrieb:

    gh0st124 schrieb:

    früher in Pascal programmiert, was?

    😃

    EDIT bzw. PS:

    gh0st124 schrieb:

    Du musst dir vorstellen, dass .Name nichts anderes ist als ein Pointer.
    Natürlich beschwert sich der Compiler, wenn du nem pointer ne const string zuweist.

    #include <stdio.h>
    
    int main ()
    {
    	char * string1;
    
    	string1 = "Bla";
    	puts (string1);
    
    	return 0;
    }
    

    funktioniert aber. (Lasse mich gerne belehren ...)

    sorry, stimmt nicht ganz was ich dir da so gesagt habe.

    Lass mich von vorne beginnen:

    char * string1;
    string1 = "Bla";
    

    Dies klappt, da wir eine Pointer-Variable haben, d.h. sie kann unterschiedliche Adressen aufnehmen. Auch die Adresse der const char "Bla".

    char string1[10];
    string1 = "Bla";
    

    Das ist das was du versuchst. Klappt nicht, da string1 diesmal ein const pointer ist, d.h. er darf nicht geändert werden und zeigt solange auf den Anfang des 10B großen Speichers bis free ihn erlöst.
    Du weist also einen Pointer = Adresse von "Bla" einem const Pointer zu = string1.


Log in to reply