strcpy
-
Hallo, ich bin noch Anfänger in C++ und habe ein Problem wo ich einfach nicht weiterkomme.
Ich habe global die Struktur:
struct daten
{
char roemisch[5];
int dezimal;
};deklariert. Im main habe ich dann eine Zeichenkette in den char der Struktur geschrieben.
struct daten datensaetze[2];
strcpy(datensaetze[0].roemisch,"CXVI");
Beim kompilieren werden keine Fehler angezeigt, aber wenn ich das Programm ausführe kommt ein Problembericht (Windows hat ein Problem festgestellt...)
Als ich das Programm ohne struct daten datensaetze[2]; ausgeführt habe kam kein Problembericht mehr.
Was kann ich da falsch gemacht haben.
Ich bin für jede Antwort dankbar.
-
Also das hier funktioniert bei mir fehlerlos:
#include <iostream> #include <cstring> using namespace std; struct daten { char roemisch[5]; int dezimal; }; int main() { struct daten datensaetze[2]; strcpy(datensaetze[0].roemisch,"CXVI"); cout << datensaetze[0].roemisch << endl; return 0; }
-
C++?
#include <iostream> #include <cstring> struct data { char roman[5]; int decimal; }; int main() { data datensaetze[2]; strcpy(datensaetze[0].roman, "CXVI"); std::cout << datensaetze[0].roman << std::endl; }... aber sonnst sollte das echt io gehen ...
-
Wenn ich das in einem neuen Projekt auf eure Weise mache funktioniert das.
Ich hab hier mal das ganze Programm:
#include<stdlib.h>
#include<stdio.h>
#include<cstring>
#include<iostream>
using namespace std;struct daten
{
char roemisch[5];int dezimal;
};int speichern()
{FILE *datei_speichern;
if((datei_speichern=fopen("datensaetze.txt","wb"))!=NULL)
{fprintf(datei_speichern,"puffer");
}
else
{
printf("Datei konnte nicht geöffnet werden");}
fclose(datei_speichern);
return 0;
}
main()
{struct daten datensaetze[2];
strcpy(datensaetze[0].roemisch,"CXVI");
datensaetze[0].dezimal=119;strcpy(datensaetze[1].roemisch,"CXXV");
datensaetze[1].dezimal=103;strcpy(datensaetze[2].roemisch,"CVXX");
datensaetze[2].dezimal=147;speichern();
return 0;
}Ich hab im Laufe des Tages immer mehr vom ganzen Programm herausgenommen um Stück für Stück voranzukommen. Das Programm ist so noch nicht fertig, ich möchte nur dass das erstmal soweit funktioniert.
Später möchte ich dann alle datensaetze an das Unterprogramm speichern übergeben und mit fwrite abspeichern. Aber da hatte ich auch immer einen Fehler, den ich nicht beheben konnte.
Danke für die schnellen Antworten.
-
@Reptil
benutz bitte Code-Tags sfdsDas Problem liegt daran, das
T foo[N]exakt N Elemente anlegt. Du legst also _2_ Elemente an und versuchst auf _3_ Elemente zuzugreifen. Das geht sich natürlich nicht aus!@(D)Evil
dann bitte auch std::strcpy
-
Oh man, was fürn blöder Fehler - danke, darauf wär ich so schnell nicht gekommen.
Ich dachte, dass es da auch bei 0 beginnt.Nächstes Mal werd ich die syntaxcoloring benutzen.
Nochmals danke für die schnelle Antwort.
-
std::ofstream ...
-
Reptile100 schrieb:
Oh man, was fürn blöder Fehler - danke, darauf wär ich so schnell nicht gekommen.
Ich dachte, dass es da auch bei 0 beginnt.Nächstes Mal werd ich die syntaxcoloring benutzen.
Nochmals danke für die schnelle Antwort.
T foo[N]legt ein Feld mit N Elementen im Bereich 0 bis einschließlich N-1 an