Neuling - Mit fgets gelesenes File als String wiedergeben



  • Warum nimmst du denn überhaupt strncmp?

    Da vergleichst du die ersten 7 Zeichen von "display format" mit "display". Und die sind gleich.
    strcmp (ohne n) ergibt ungleich, da nach dem y noch zeichen kommen.



  • Waah immer diese Kleinigkeiten 😛

    Das musste ich Anfangs nehmen weil es da mit strcmp Probleme gab.

    Weiß jetzt schon gar nimmer was^^

    Jetzt gehts auf jeden Fall.

    Gibts in diesem Forum eigentlich noch andere Leute oder nur dich?? 😉



  • Evilmachine schrieb:

    Waah immer diese Kleinigkeiten 😛

    Das musste ich Anfangs nehmen weil es da mit strcmp Probleme gab.

    Weiß jetzt schon gar nimmer was^^

    Jetzt gehts auf jeden Fall.

    Gibts in diesem Forum eigentlich noch andere Leute oder nur dich?? 😉

    Mit so viel Zeit sich hier dauerhaft mit dem Forum zu beschäftigen vermutlich nur DirkB.



  • Lol ok^^

    Jetzt hab ich auch grad wieder gesehen warum das strncmp

    Jetzt ohne das N hab ich nämlich das Problem das er irgendwelche unsichtbaren SDteuerzeichen im String hat und z.b.

    if (strcmp(key, "display") == 0 || strcmp(key, "custom display") == 0 || strcmp(key, "extended display") == 0)

    Nicht mehr funktioniert^^



  • Was sollen denn das für Zeichen sein?
    Die können ja nur am Ende vom Key sein.
    Kannst du sehen mit

    printf("<%s>", key);
    

    Durch die <> (oder andere Symbole) kannst du erkennen ob da noch Zeichen kommen.
    Wenn da ein Zeilenvorschub ist, ist die > in der nächsten Zeile.

    Da brauchst du eine Trim-Funktion, die dir Whitespace und beliebige andere Zeichen (vorne und/oder hinten) entfernt.
    Das wurde aber schon mal erwähnt.



  • Problem gefunden.

    Aber nächstes.

    Jetzt habe ich ja die Displays gezählt und die Anzahl als verstecktes feld hinzugefügt.

    Weil ich jetzt eine Schleife brauche die mir auch diese werte ausliest (ohne das ich 15 Displays einzeln auslese), habe ich nun das Problem das ist aus nem int einen String machen muss um diesen per strcat dahinter zu hängen.

    Funzt soweit auch. Nur sagt mir der COmpiler beim bauen

    main.c:232:21: Fehler: unverträgliche Typen bei Zuweisung an Typ »char[50]« von Typ »char *«

    DSP ist ein int mit dem Wert 1.

    char dspval[50];
                sprintf(dspval, "%i", dsp);
                 dspval = strcat("value.", dspval);
                printf("dspquery %s<br>", dspval);
    

    Aktueller Gesamtcode unter http://pastebin.com/M0yTKN3S



  • 1. Du kannst einem Array nur bei der Initialisierung einen Wert zuweisen. (C ist nicht Jaca oder PHP)
    2. erwartet strcat als ersten Parameter einen Zeiger auf ein char(-Array), das es auch verändern darf (und genug Platz hat).
    Das ist aber bei Stringliteralen (der Text in "") nicht der Fall).

    Enweder machst du das alles mit sprintf oder gleich mit printf

    sprintf(dspval, "value.%i", dsp);
    // oder (was du lieber magst)
    sprintf(dspval, "%s%i", "value.", dsp);
    
    printf("dspquery %s<br>", dspval);
    

    oder gleich

    printf("dspquery value.%i<br>", dsp);
    


  • Naja ich hab das schon angepasst

    Der Code ist jetzt

    for(i=0;i<query;i++)
            {    
    
                sprintf(dspval, "%i", dsp);
                 dspval = strcat(dspv, dspval);
                printf("dspquery %s<br>", dspval);
    
            }
    

    Aber die Meldung bleibt die gleiche.

    Das printf dient nur zur Kontrolle.

    Letztendlich will ich das ganze in meiner Funktion getParam übergeben und zwar so

    getParam("display.3", query_dspcount);

    WObei die Zahl halt aus dem i generiert werden soll.



  • Nochmal:
    Da du char dspval[50]; hats geht dspval = strcat(dspv, dspval); nicht.
    Du kannst einem Array (dspval) keinen Wert direkt (mit 🙂 zuweisen.
    C ist kein PHP bzw Java.

    Lass das strcat sein und mach alles mit sprintf.

    sprintf(dspval, "%s%i", dspv, dsp);
    

    Bei strcat wird auch der String des 2.Parameter an den String des 1. Paramters angehängt. strcat(ziel, quelle);
    Bei dir sieht das irgendwie anders aus.



  • Ah Okay da lag der Fehler.

    Ja ich muss ständig umdenken ich merk das schon.

    Hast mich auf jeden Fall weiter gebracht. Jetzt passiert genau das was ich will^^

    Danke.

    Kommst du aus der nähe von Hannover?? Glaub ich muss dir mal nen Bier ausgeben...oder nen Kasten........oder ein Fass 😛 😉



  • Sind ~70 km nahe genug? 😃

    Aber Danke, so viel Bier trinke ich nicht.


Anmelden zum Antworten