Einträge löschen



  • hi!
    ich mach ein programm, in dem man mehrere einträge eingeben kann (Festnetz, Mobil und SMS)
    so jetzt möchte ich, das der anwender einzelne einträge auch wieder löschen kann!
    da hab ich mir gleich mal ein quelltext ausgedacht:

    void loeschen(char k)
    {
    	int i;
    	if (k=='f') pt=&tFest;
    	else if (k=='m') pt=&tMobil;
    	else pt=&tSMS;
    	if((*pt).Anzahl!=0)
    	{
    		if (k=='f') Auflistung(1);
    		else if (k=='m') Auflistung(2);
    		else Auflistung(3);
    		printf("\n\n Bitte jetzt die Nummer der zu loeschenden Zahl eingeben:\n");
    		do
    		{
    			scanf("%d",&i);
    		}
    		while(i<0 && i> (*pt).Anzahl);
    		for(;i<=(*pt).Anzahl;i++) 
    		{
    			strcpy((*pt).Auflistung(i),(*pt).Auflistung(i+1));
    		}
    	}
    	else printf("Es bit nichts zum Loeschen!\n");
    }
    

    *pt zeigt auf eine Struktur.

    jetzt kommt diese Fehlermeldung:

    Kostenrechnung.cpp(382) : error C2064: Ausdruck ergibt keine Funktion
    Kostenrechnung.cpp(382) : error C2064: Ausdruck ergibt keine Funktion

    warum funktioniert dies nicht?



  • Gr33b0 schrieb:

    warum funktioniert dies nicht?

    keine Ahnung, ich bin kein Compiler. Welche ist die Zeile 382?



  • strcpy((*pt).Auflistung(i),(*pt).Auflistung(i+1));
    

    derhier 🙂



  • Gr33b0 schrieb:

    strcpy((*pt).Auflistung(i),(*pt).Auflistung(i+1));
    

    derhier 🙂

    Zeig mal das Prototyp von Auflistung. Mach mal auch so

    strcpy(pt->Auflistung(i),pt->Auflistung(i+1));
    


  • ich hab es mal so gemacht, doch leduer nicht funktioniert oO taucht das gleiche auf -.-

    struct TKosten 
    {
    	double Gesamtkosten; 
    	char Auflistung [20][1080];
    	int Anzahl;
    };
    
    struct TKosten tFest={0.0,{0},0}, tMobil={0.0,{0},0},tSMS={0.0,{0},0};
    struct TKosten * pt;
    


  • for(;i<=(*pt).Anzahl;i++) 
    		{
    			pt1=&(*pt).Auflistung[i][1080];
    			pt2=&(*pt).Auflistung[i+1][1080];
    			strcpy((*pt1),(*pt2));
    		}
    

    jetz kommt diese Fehlermeldung:

    error C2664: 'strcpy' : Konvertierung des Parameters 1 von 'char' in 'char *' nicht moeglich
    Die Konvertierung eines ganzzahligen Typs in einen Zeigertyp erfordert ein reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
    Fehler beim Ausführen von cl.exe.

    könnte das einwehnig weiterhelfen?



  • Tja, weißt du, Auflistung ist ein Array, keine Funktion. Der Ausdruck Auflistung(i) ist der Ausdruck einer Funktion, der du i als Parameter übergibst. Was du meinst ist wohl

    strcpy(pt->Auflistung[i],pt->Auflistung[i+1]);
    

    Gr33b0 schrieb:

    for(;i<=(*pt).Anzahl;i++) 
    		{
    			pt1=&(*pt).Auflistung[i][1080];
    			pt2=&(*pt).Auflistung[i+1][1080];
    			strcpy((*pt1),(*pt2));
    		}
    

    jetz kommt diese Fehlermeldung:

    error C2664: 'strcpy' : Konvertierung des Parameters 1 von 'char' in 'char *' nicht moeglich
    Die Konvertierung eines ganzzahligen Typs in einen Zeigertyp erfordert ein reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
    Fehler beim Ausführen von cl.exe.

    könnte das einwehnig weiterhelfen?

    Ich würde empfehlen, zuerst C richtig zu lernen. pt1 und pt2 sind char*. pt->Auflistung[i][1080] ist ein char, kein char*. Außerdem erwaret strcpy ein char* und (*pt1) ist ein char! Wie gesagt, lerne zuerst C oder lerne den Umgang mit Zeigern.

    for(;i<pt->Anzahl;i++) 
         strcpy(pt->Auflistung[i],pt->Auflistung[i+1]);
    


  • tja, zeiger haben wir in der sch8ule nur angeschnitten. das mit der funktion, Auflistung(1) passt ja, da ja eine extrafunktion gibt, die void Auflistung(int) heisst.

    zur strcpy, wenn du weisst, wie man das macht, sag es mir! weil sonst hilfst du mir überhaupt nicht! und dein post war VÖLLIG sinnlos!



  • Gr33b0 schrieb:

    tja, zeiger haben wir in der sch8ule nur angeschnitten. das mit der funktion, Auflistung(1) passt ja, da ja eine extrafunktion gibt, die void Auflistung(int) heisst.

    nein, das ist falsch, weil du (*pt).Auflistung(i) aufrufst. In dem du das tust, dann weiß der Compiler, dass Auflistung ein Member der Struktur TKosten ist. Aber C kennt keine Funktionen in Strukturen, deshalb ist der Ausdruck keine Funktion (siehe Fehlermeldung)

    Gr33b0 schrieb:

    zur strcpy, wenn du weisst, wie man das macht, sag es mir! weil sonst hilfst du mir überhaupt nicht! und dein post war VÖLLIG sinnlos!

    man: strcpy(3)

    dahinter steckt sich nichts schwieriges. Das Buffer, in das geschrieben werden soll, muss schreibar sein.

    Hast du mit meinem Code ausprobiert?



  • habs nochmal umgekrempelt und hinbekommen ....

    ich danke dir, 🙂

    und das mit "lern erstmal richtig c" ... das mach ich ja momentan ... in der schule 😵


Anmelden zum Antworten