Hallo Comunity, Ich habe ein Problem mit meinem Code. Er arbeitet richtig aber es kommt andauernd folgender Fehlerhinweis: - Argument is incompatible with corresponding format string conversion. Kann mir jemand sagen, was bei meinem String falsch ist? -------------- ... float a; int b, c; char d[24]; ... sscanf(buffer,"%f%d%d%s", &a, &b, &c, &d); ... ------------- Die Line aus der ausgelesen wird sieht zum Beispiel so aus: 0.111111 11 8 1111111111111111 Vielen Dank
Diese Beispiel kompiliert und läuft bei mir ohne Fehler/Warnung:
1 | #include <stdio.h> |
2 | |
3 | int main() |
4 | {
|
5 | float a; |
6 | int b, c; |
7 | char d[24]; |
8 | char buffer[100]; |
9 | |
10 | strcpy(buffer, "0.111111 11 8 1111111111111111"); |
11 | |
12 | sscanf(buffer, "%f%d%d%s", &a, &b, &c, d); |
13 | |
14 | printf("a, b, c, d: %s\n", buffer); |
15 | |
16 | return 0; |
17 | }
|
Sorry. Sollte natürlich so lauten:
1 | #include <stdio.h> |
2 | |
3 | int main() |
4 | {
|
5 | float a; |
6 | int b, c; |
7 | char d[24]; |
8 | char buffer[100]; |
9 | |
10 | strcpy(buffer, "0.111111 11 8 1111111111111111"); |
11 | |
12 | sscanf(buffer, "%f%d%d%s", &a, &b, &c, d); |
13 | |
14 | printf("a, b, c, d: %f%d%d%s\n", a, b, c, d); |
15 | |
16 | return 0; |
17 | }
|
Johann L. schrieb: > &d --> d Korrekt, nur verursacht das meines Erachtens nach nicht die Warnung, die der Themenersteller angibt. Sondern eher ein: sscanf.c: In function `main': sscanf.c:12: warning: char format, different type arg (arg 6) @Jim: Wie ist denn buffer deklariert?
:
Bearbeitet durch User
Mark Brandis schrieb: > Korrekt, nur verursacht das meines Erachtens nach nicht die Warnung, die > der Themenersteller angibt. Sondern eher ein: > > sscanf.c: In function `main': > sscanf.c:12: warning: char format, different type arg (arg 6) Auch ich bekomme die selbe Compilerwarnung wenn ich den String mittels &d einzulesen versuche, obwohl es funktioniert. Möglicherweise hängt es vom Compiler ab welche Warnung ausgegeben wird. Getestet mit g++ (GCC) 3.3.6 Gruss Martin
mloidl schrieb: > Mark Brandis schrieb: >> Korrekt, nur verursacht das meines Erachtens nach nicht die Warnung, die >> der Themenersteller angibt. Sondern eher ein: >> >> sscanf.c: In function `main': >> sscanf.c:12: warning: char format, different type arg (arg 6) > > Auch ich bekomme die selbe Compilerwarnung wenn ich den String mittels > &d einzulesen versuche, obwohl es funktioniert. > > Möglicherweise hängt es vom Compiler ab welche Warnung ausgegeben wird. Möglich. Da d aber ein char Array ist und im Format String ein %s steht, ist 'd' korrekt (und nicht &d) und passt als solches auch zu %s UNd das stimmt auch dann, wenn die Compilerhersteller aufgegeben haben und stillschweigend bei Arrays das & ignorieren, obwohl es eigentlich nicht richtig ist.
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.