PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C: strcpy() type mismatch


mf_2
2004-02-20, 21:46:04
hallo,
ich bins mal wieder ;)

Ich hab n problem:

ich bekomm folgenden compiler fehler:
datei.c: Type mismatch in parameter '__dest' in call to 'strcpy'.



Hier mein code:

char eins[30];
char zwei[4][30];
int zahl=3;

int main(void)
{

strcpy(eins,zwei[zahl]);

return 0;
}

Ich will erreichen, dass zwei[3] in eins kopiert wird.
In nem anderen Script hab ich das so und da funzt es. Ich hab das sogar mit copy&paste übernommen und die varibalennamen angeglichen, um tippfehler zu vermeiden, der Borland compiler bringt mir immer diesen Fehler und ich weiss ned was ich dagegen tun soll,weil wiue gesagt an ner anderen stelle gehts ja auch.
Könnt ihr mir weiterhelfen?

Lord Nikon
2004-02-21, 00:12:55
Der Quellcode funktioniert bei mir mit dem c++ Builder 6 ohne Probleme.

char eins[30];
char zwei[4][30];

int zahl=3;
int main(int argc, char* argv[])
{

zwei[3][0]='h'; // Kleiner Test



strcpy(eins,zwei[zahl]);
cout<<eins<<endl;
//Sleep(1000000); Nur wegend er Ausgabe
return 0;
}

Das 'h' wird auch auch richtig ausgeben.

zeckensack
2004-02-21, 02:16:51
Mehrdimensionale Arrays sind kompliziert ;)

Sicherste Variante:
char eins[30];
char zwei[4][30];
int zahl=3;

int main(void)
{
strcpy(eins,&zwei[zahl][0]);
return 0;
}Aber bitte vorher das Array zwei entsprechend füllen, sonst gibt's einen üblen Crash.

Die Verwendung von strncpy wäre dringend zu empfehlen.

mf_2
2004-02-21, 08:49:57
zeckensack's code geht bei mir auch nicht: geicher Fehler.
Aber mir ist gerade aufgefallen, dass ich auch ne Warnung in derselben Zeile bekomme : 'nonportable pointer conversion'.
Das komische ist nachwie vor, dass ich das mit Copy&Paste aus ner anderen Datei rüberkopiert habe, wo es auch funktioniert.

zeckensack
2004-02-21, 20:02:08
Klappt es so?
strcpy(eins,&(zwei[zahl][0]));
(die Klammern sind neu)

mf_2
2004-02-21, 20:37:42
thx, jetzt geht es.