Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hallo zusammen,

ich habe hier ein Stück Quellcode bekommen, von dem ich nicht wirklich weiß, ob es C++ ist.

Jedenfalls gibt es dort Variablen, die wiefolgt heissen:

z.B.

CString ActState("");

und mehere SQL-Statements, die so aussehen:

sql.Sprintf("select ID from Artikel where ID = %s", ActJobID.Get());

Was ist denn %s?

Es ist nirgends deklariert oder dergleichen. Ich weiß zwar jetzt, was da für Werte drinnestehen (mit Hilfe eines Logfiles), aber woher das kommt, weiss ich nicht.

Per google hab ich die meisten Treffer für "%s" C++ bekommen.

Von daher denke ich, dass ich hier richtig bin.

Es ist zwar öfters benutzt worden, aber nigens erklärt was dieses "%s" eigentlich ist.

Gruß

Ganymed

Sieht nach C++ aus. War das deine Frage?

Die Angaben in dieser Tabelle basieren auf der Annahme, daß in der Formatieranweisungkeine Flag-Zeichen, Breitenangaben, Präzisionsangaben oder Größenmodifizierer enthalten waren

Hinweis: Bestimmte Konventionen begleiten einige dieser Formatieranweisungen.

Typzeichen Erwartete Eingabe Ausgabeformat

Numerische Werte

d Integer signed int (dezimal)

i Integer signed int (dezimal)

o Integer unsigned int (oktal)

u Integer unsigned int (dezimal)

x Integer unsigned int (hexadezimal), Buchstaben a bis f

X Integer unsigned int (hexadezimal), Buchstaben A bis F

f Gleitkomma vorzeichenbehafteter Wert der Form [-]dddd.dddd.

e Gleitkomma vorzeichenbehafteter Wert der Form [-]d.dddd oder e[+/-]ddd

g Gleitkomma vorzeichenbehafteter Wert im e- oder f-Format. Präzision gibt die Anzahl signifikanter Ziffern an.

Abschließende Nullen und Dezimalpunkt werden nur ausgegeben, wenn es nötig ist.

E Gleitkomma dasselbe Format wie e, aber mit dem Zeichen E für den Exponenten

G Gleitkomma dasselbe Format wie e, aber mit dem Zeichen E für den Exponenten, wenn das Format e verwendet wird.

Zeichen

c Zeichen einzelnes Zeichen

s String-Zeiger Ausgabe bis zu einem NULL-Zeichen oder dem Erreichen der durch Präzision vorgegebenen Zeichenzahl

% (nichts) Ausgabe des Zeichens %

Zeiger

n Zeiger auf int Speichert an der Position, auf die das Eingabeargument zeigt, die Anzahl der bis jetzt ausgegebenen Zeichen.

p Zeiger Gibt das Eingabeargument als Zeiger in hexadezimaler Form aus (near-Zeiger als YYYY, far-Zeiger als XXXX:YYYY).

Unendlich große positive oder negative Gleitkommazahlen werden als +INF bzw. als -INF ausgegeben.

Eine "IEEE-Nichtzahl" wird als +NAN oder -NAN (Not-A-Number ) angegeben.

  • Autor

*grübel*

Heisst das, wenn ich anstatt %s ein %d da hin schreibe, dass ich dann in das SQL-Statement auch nen Integer reingesetzt bekomme?

Die ID ist nämlich kein String, sondern ein Integer...

Vielleicht bekomme ich deswegen die ganzen Fehler...

  • Autor

Nachtrag:

Also ich hab anstatt mal dem %s ein %d hingeschrieben.

Jetzt bekomme ich zwar keine Fehlermeldung mehr, allerdings fehlt jetzt bei der Ausgabe etwas.

Frage: Wie kann ich also das Ganze wieder zum Schluss zu einem String machen?

Deine Frage kann man ohne weitere Informationen nicht beantworten. Die hier zitierten Formatangaben beziehen sich auf sprintf, eine Funktion aus der C-Standardbibliothek. Du benutzt eine Funktion Sprintf, eine Memberfuntion der Klasse, von der die Variable sql in deinem Code eine Instanz ist.

Es ist zwar naheliegend, dass sich diese Funktion ähnlich verhält wie sprintf aus der Standardbibliothek, aber das ist nicht sicher.

Du sagst, dass du jetzt keine Fehlermeldungen mehr bekommst. Hast du vorher welche bekommen?

Wie heißt der Typ von sql? Hast du vielleicht eine Dokumentation der Sprintf-Funktion?

  • Autor

Hallo,

danke für die Ganzen Antworten.

Das Problem hab ich jetzt gelöst *freu*

Das Problem mit dem genauen Posten liegt darin, dass ich Quellcode in einer Anwendung einfüge und das Resultat erst in QuarkXPRess anschauen kann. Einen C++ Compiler habe ich nämlich nicht --> auch keine C++ Fehlermeldung.

Ich bekomme halt nur Fehler von Quark aus.

Aber durch ein paar Logfiles konnte ich herausfinden, dass ich die Prozedur, die hinter dem Statement steht einfach nochmal aufrufen muss; für jedes %s möchte er nämlich einen Funktionsaufruf haben.

Durch die Umkonvertierung nach %d bin ich aber erst auf die Lösung gekommen :)

Danke schön!

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.