Supportnet / Forum / Anwendungen(Java,C++...)
C und Arrayfeld löschen
Frage
Hallo,
ich habe ein Prog in C geschrieben mit dem ich
Floatzahlen einlesen kann die dann zusammenaddiert werden sollen.
Jetzt hab ich nur ein problem, da ich 2 Zahlen hintereinader einlese überschriebt der mir teils das 2te arrayfeld.
Beispiel:
Zahl1 ist: 123
Zahl2 ist: 5
Diese sollen jetzt addiert werden Zahl1+Zahl2
raus kommt 646 ?!
Er rechnet also 123 + 523
Somit übernimmt er den Wert aus dem ersten Arrayfeld in das 2te und überschriebt dann die erste stelle.
Also muß ich das Arrayfeld nach dem einlesen der ersten Zahl ganzlöschen.
Aber gibts da einen Befehl oder muß ich echt alle arrayfelder mit "nix" überschreiben ?
THX
Antwort 1 von semi
Mehr Input bitte. Wie sieht der Code aus?
Antwort 2 von Redhawk
double getfloat(void);
...
...
...
double floatzahl;
char zeichen,eingabe[25];
int zahl=0,punkt=0,minus;
int i=0,imax=0;
int e=0;
int k=0;
int maxm=9,maxe=3;
// Main
void main (void)
{
double zahl1,zahl2;
clrscr();
printf("\n\tBitte geben Sie eine erste Zahl ein : ");
zahl1=getfloat();
printf("\n\tBitte geben Sie eine zweite Zahl ein : ");
zahl2=getfloat();
printf("\n\n\n\tDas Ergebnis der Addition ist : %lg ",zahl1+zahl2);
getch();
}
...
...
...
double floatzahl;
char zeichen,eingabe[25];
int zahl=0,punkt=0,minus;
int i=0,imax=0;
int e=0;
int k=0;
int maxm=9,maxe=3;
// Main
void main (void)
{
double zahl1,zahl2;
clrscr();
printf("\n\tBitte geben Sie eine erste Zahl ein : ");
zahl1=getfloat();
printf("\n\tBitte geben Sie eine zweite Zahl ein : ");
zahl2=getfloat();
printf("\n\n\n\tDas Ergebnis der Addition ist : %lg ",zahl1+zahl2);
getch();
}
Antwort 3 von Redhawk
argh, More Info:
Also, in der Funktion Getfloat wird die Floatzahl eingelesen und als Double-Varialbe floatzahl zurückgegeben. Diese wird als double Zahl1 & zahl2 dann gespeichert(solle so sein, ist aber nicht so, da er immer überschriebt)
Am ende soll einfach zusammenaddiert werden.
Also, in der Funktion Getfloat wird die Floatzahl eingelesen und als Double-Varialbe floatzahl zurückgegeben. Diese wird als double Zahl1 & zahl2 dann gespeichert(solle so sein, ist aber nicht so, da er immer überschriebt)
Am ende soll einfach zusammenaddiert werden.
Antwort 4 von semi
?
Ich sehe immer noch kein "Arrayfeld", das Du löschen möchtest.
Double-Werte kannst Du wie folgt einlesen:
Gruß,
Michael
Ich sehe immer noch kein "Arrayfeld", das Du löschen möchtest.
Double-Werte kannst Du wie folgt einlesen:
char lineBuffer[128];
double doubleValue;
fgets(lineBuffer,sizeof(lineBuffer),stdin);
doubleValue = atof((char*)&lineBuffer);
oder
double doubleValue;
scanf("%en", &doubleValue);Gruß,
Michael
Antwort 5 von Redhawk
Hi,
ok, noch mehr Info :-)
Ich gebe Floatzahlen ein, die ich in einem Array of Char => eingabe[25] speichere. Diese werden dann mit atof umgewandelt und zurückgegeben.
Soweit sogut, aber der inhalt der "eingabe[25]"
bleibt ja vorhanden. Jetzt lese ich mit dem selben Feld die 2te Zahl ein und muß nun vorher alles andere löschen. Sonst passiert der Fehler wie oben...
P.s Schlecht ausgedrückt ?
THX
ok, noch mehr Info :-)
Ich gebe Floatzahlen ein, die ich in einem Array of Char => eingabe[25] speichere. Diese werden dann mit atof umgewandelt und zurückgegeben.
Soweit sogut, aber der inhalt der "eingabe[25]"
bleibt ja vorhanden. Jetzt lese ich mit dem selben Feld die 2te Zahl ein und muß nun vorher alles andere löschen. Sonst passiert der Fehler wie oben...
P.s Schlecht ausgedrückt ?
THX
Antwort 6 von semi
Mit memset kannst Du das Array imt '\0' füllen.
Gruß,
Michael
memset(&buffer, '\0', sizeof(buffer));allerdings ist dies hier nicht notwendig.
#include <stdio.h>
#include <stdlib.h>
int main()
{
char buffer[128];
double zahl1, zahl2;
// Mit atof
printf("Zahl 1 eingeben: ");
fgets(buffer,sizeof(buffer),stdin);
zahl1 = atof((char*)&buffer);
printf("Zahl 1: %.2f\n", zahl1);
printf("Zahl 2 eingeben: ");
fgets(buffer,sizeof(buffer),stdin);
zahl2 = atof((char*)&buffer);
printf("Zahl 2: %.2f\n", zahl2);
printf("Summe : %.2f\n", (zahl1+zahl2));
// Mit scanf
printf("Zahl 1 eingeben: ");
scanf("%en", &zahl1);
printf("Zahl 1: %.2f\n", zahl1);
printf("Zahl 2 eingeben: ");
scanf("%en", &zahl2);
printf("Zahl 2: %.2f\n", zahl2);
printf("Summe : %.2f\n", (zahl1+zahl2));
return 0;
}
Gruß,
Michael

