Problem in C

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/problem_in_c_214468/page_1 - zur Vollversion wechseln!


zeitgeist schrieb am 26.02.2010 um 14:49

habe folgenden code:

Code:
#include <stdio>
#include <stdlib>

struct name {
   char the_name[255];
   struct name *next;
};
   
   
int main (int argc, const char * argv[]) {

   
   struct name *first = NULL;
   struct name *new_name;
   
   new_name = malloc(sizeof(struct name));
   
   new_name->the_name = "Raphael Gruber";   
   
   return 0;
}

und wenn ich new name.the_name meinen namen zuweisen willst steht da "incompatible types in assignment", warum? ist doch ein array von chars..

mfg


Neo1010 schrieb am 26.02.2010 um 14:53

hast es schon mal mit strcpy probiert?

strcpy(new_name.the_name,"Raphael Gruber");


zeitgeist schrieb am 26.02.2010 um 14:59

funktioniert! super danke :)


Neo1010 schrieb am 26.02.2010 um 15:06

no problem ;)


ica schrieb am 26.02.2010 um 15:08

wenn schon dann bitte strncpy verwenden.


watchout schrieb am 26.02.2010 um 17:08

Zitat von ica
wenn schon dann bitte strncpy verwenden.
Vielleicht zur Erklärung:

strcpy kopiert bis zu einem terminierenden '\0', egal wie lange der String ist und wenn der String nicht \0-Terminiert ist auch gleich mal über die String-Grenzen hinaus. Und natürlich hat strcpy keine Ahnung wie groß der freie Speicherbereich an der Zieladresse ist. Dadurch kann man sehr sehr leicht Buffer overflows erzeugen, wenn man Glück hat gibts auch einen Segmentation fault, dann merkt man wenigst dass etwas faul ist


that schrieb am 26.02.2010 um 20:18

Das ist überhaupt nicht C, das ist C++. Und warum verwendest du in C++ nicht einfach die Klasse "string"? Dann geht auch die Zuweisung einfach mit "=".


jives schrieb am 26.02.2010 um 23:25

Ich hab jetzt wirklich fest geschaut und sehs einfach nicht. Warum ist das C++?

Edit: Del. Wars auch nicht...


that schrieb am 27.02.2010 um 00:19

Oh, nicht genau geschaut. Die Includedateien haben keine Extensions, und das ist nur bei C++ üblich - für C++ wären das aber natürlich cstdio und cstdlib.




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025