DEUTSCHE VERSION |
|
Links | | | Forums | | | Comments | | | Report news |
Chat | | | Polls | | | Newsticker | | | Archive |
amiga-news.de Forum > Programmierung > GCC und Fragezeichen | [ - Search - New posts - Register - Login - ] |
-1- | [ - Post reply - ] |
2003-11-02, 20:07 h Palgucker Posts: 1342 User |
Hallo Habe heute mal wieder mit GCC gespielt. Und mir fiel auf, das ein als Argument eingegebenes ? - wie es bei Cli-Programmen als Hilfeanforderung üblich ist, einfach zur 0 "konvertiert" wird. Das heißt, wenn ich das über argv übergebene Argument mit printf %c gleich wieder ausgebe, wird statt des Fragezeichens eine 0 (ASCII 48) ausgegeben. Dies geschieht bei gcc2.95 und 3.3 gleichermassen. Mit vbcc funktionierts aber so, wie es soll. Hat jemand eine Erklärung für diese Eigenart und vielleicht 'ne Lösung zur Umgehung dieses Problems? mfg Palgucker [ - Answer - Quote - Direct link - ] |
2003-11-02, 23:30 h _PAB_ Posts: 3016 User |
Hmm, ich würde das ASCII-Zeichen Nr. 4 einfach als Fragezeichen interpretieren. Das ist ja ein Steuerzeichen, welches man nicht einfach so auf der Tastatur finden wird. [ Dieser Beitrag wurde von _PAB_ am 02.11.2003 editiert. ] [ - Answer - Quote - Direct link - ] |
2003-11-03, 01:02 h Palgucker Posts: 1342 User |
Hallo Pab quote: Hmm, ich würde das ASCII-Zeichen Nr. 4 einfach als Fragezeichen interpretieren. Das ist ja ein Steuerzeichen, welches man nicht einfach so auf der Tastatur finden wird. Ich meinte mit 0 halt ASCIIcode 48. Ist nur die Klammer zunahe an die 8 gerutscht - Smilie wider Willen. mfg Palgucker [ - Answer - Quote - Direct link - ] |
2003-11-03, 07:25 h Micha1701 Posts: 938 User |
Hi! Das Problem ist nicht GCC sondern Dein printf()... argv[] sind Zeiger auf Strings - daher muß printf auch mit dem Argument %s aufgerufen werden und nicht mit %c.... Also probiers mal mit "printf("%sn", argv[1]);" und Du wirst sehen, da ist Dein Fragezeichen... ;-) -- Micha Look at my HPs: http://www.lanser-online.de.vu http://www.RealmsofPower.de.vu [ - Answer - Quote - Direct link - ] |
2003-11-03, 18:39 h Palgucker Posts: 1342 User |
nochmal Hallo Muss erstmal was "geraderücken". Die 0, die das Programm zurückgibt, ist eine Datei. setze ich das aktuelle Verzeichnis der Schell z.B. auf Ram: und starte dann das Programm mit ? als Parameter, gibt es bei mir T aus. Das Programm sieht zu Zeit folgendermassen aus: #include <stdio.h> int main(int argc,char **argv) { printf("%sn",argv[1]); } Ist da irgendwo der Wurm drin? mfg Palgucker [ - Answer - Quote - Direct link - ] |
2003-11-04, 11:45 h Palgucker Posts: 1342 User |
hallo Nun hab ich's. Die für mich verwunderlich "Fehldeutung" des Fragezeichens lässt sich einfach mit -noixemul abschalten. mfg Palgucker [ - Answer - Quote - Direct link - ] |
2003-11-04, 13:14 h gni Posts: 1106 User |
Zitat:Das *muß* auch ohne -noixemul funktionieren. [ - Answer - Quote - Direct link - ] |
2003-11-04, 13:22 h thomas Posts: 7718 User |
Das funktioniert auch. Das Problem ist wohl, daß du dich irgendwie in der GeekGadgets-Shell befindest. Da werden Joker-Zeichen wie ? und * schon vor der Ausführung in die entsprechenden Dateien aus dem aktuellen Verzeichnis geändert. Du mußt das Fragezeichen in Hochkomma einschließen, damit es beim Programm ankommt. Gruß Thomas -- Email: thomas-rapp@web.de Home: home.t-online.de/home/thomas-rapp/ [ - Answer - Quote - Direct link - ] |
2003-11-04, 14:30 h gni Posts: 1106 User |
Zitat:Wenn er die GG-Shell benutzen würde, dann dürfte auch das -noixemul Programm das ? nicht zusehen bekommen :-) Die These kann aber dennoch stimmen, da die ixemul.library auch noch selber Wildcardexpansion macht (für den Fall das man die GG-Shell nicht benutzt ;-) Zitat:Guter Tipp. [ - Answer - Quote - Direct link - ] |
2003-11-04, 14:36 h Palgucker Posts: 1342 User |
Hallo gni und Thomas Auch wenn es gehen müßte, es tut's nicht. Habe eben die paar Zeilen nochmal ohne -noixemul kompiliert und den Rechner rebootet. Dann ohne Startup-Sequence gebootet ( Damit die Schell auch wirklich nichts mit GG zu tun hat ) und Programm mit Fragezeichen aufgerufen. Ergebnis waren wieder ein paar Requester, die nach ENV: verlangten und die Ausgabe der Datei 0. Komisch ist auch, das je nachdem, wieviele Fragezeichen gesetzt werden, entweder die Fragezeichen oder eine Datei oder Verzeichnis zurückgegeben werden. Das geht aber auch mit djpeg. Wenn ich dort ein JPEG nach Ram: kopiere und eine Shell öffne, "cd Ram:" eingebe und "djpeg ???????????? Test.ppm" konvertiert djpeg bei mir mit diesen 12 Fragezeichen tatsächlich das JPEG. Und dieses geht bei mir wahrscheinlich mit den meißten Binaries, die nach der Ixemul.library verlangen. Also merkwürdig ist das schon, wenn dieses bei euch nicht so ist. mfg Palgucker [ - Answer - Quote - Direct link - ] |
2003-11-04, 14:45 h thomas Posts: 7718 User |
Naja, egal wer es macht, für Unix ist das normal. Ist mir bei Linux auch schonmal (unangenehm) aufgefallen. Und bei z/OS USS auch. Gruß Thomas -- Email: thomas-rapp@web.de Home: home.t-online.de/home/thomas-rapp/ [ - Answer - Quote - Direct link - ] |
-1- | [ - Post reply - ] |
amiga-news.de Forum > Programmierung > GCC und Fragezeichen | [ - Search - New posts - Register - Login - ] |
Masthead |
Privacy policy |
Netiquette |
Advertising |
Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved. |