Ich bin ziemlich neu in der Welt der Programmierung, also bitte vergib mir, wenn das ein häufiger Fehler ist.sscanf() double & string
Ich versuche, 3 doppelte Werte und 3 Strings aus einer Eingabezeichenfolge zu scannen, aber es geht nicht nach dem zweiten Wert weiter.
double total_weight_kg(char *s, int Length) {
double weights[3];
char units[3];
int test = sscanf(s, "%lf, %s, %lf, %s, %lf, %s",
&weights[0], &units[0],
&weights[1], &units[1],
&weights[2], &units[2]);
printf("%i\n", test);
printf("%s\n", &units[0]);
int main(void) {
total_weight_kg("5, g, 1, t, 175, kg", 3);
return 0;
der erste Druck druckt 2 und die zweite ist die g.
Außerdem würde ich gerne Einheiten [i] in einer Schleife vergleichen, aber das scheint auch nicht funktionieren zu können.
for (int i = 0; i < Length; i++) {
w = weights[i];
if (strcmp(units[i], "kg") == 0) {
weight += w;
}
}
Ich hoffe, dass Sie mir eine Lösung für dieses Problem finden helfen können,
edit: Every wird nun wie vorgesehen arbeiten. Vielen Dank für Ihre Hilfe. (19 [^] war ein großes Problem)
Das 'scanf' Format' "% s" 'ist für das Lesen nullterminierten Strings. Ihr Array 'units' ist ein Array von drei einzelnen' char' Elementen, keine Strings. Der Compiler hätte Warnungen an Sie rufen sollen (sowohl für diesen als auch für den Aufruf "strcmp"). –
'char Einheiten [3];' wird nicht g und kg halten. Du hast hier einen Pufferüberlauf. Sie müssen ein char [] -Array wie zum Beispiel 'char units [3] [10]' erstellen. –
Wir verzeihen dir: C Saiten sind die Hölle. –