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 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
&d --> d
Sorry. Sollte natürlich so lauten:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
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?
Gast
#3906394
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.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.