ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Programmierung > GCC und Fragezeichen | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
-1- | [ - Beitrag schreiben - ] |
02.11.2003, 20:07 Uhr Palgucker Posts: 1342 Nutzer |
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 [ - Antworten - Zitieren - Direktlink - ] |
02.11.2003, 23:30 Uhr _PAB_ Posts: 3016 Nutzer |
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. ] [ - Antworten - Zitieren - Direktlink - ] |
03.11.2003, 01:02 Uhr Palgucker Posts: 1342 Nutzer |
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 [ - Antworten - Zitieren - Direktlink - ] |
03.11.2003, 07:25 Uhr Micha1701 Posts: 938 Nutzer |
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 [ - Antworten - Zitieren - Direktlink - ] |
03.11.2003, 18:39 Uhr Palgucker Posts: 1342 Nutzer |
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 [ - Antworten - Zitieren - Direktlink - ] |
04.11.2003, 11:45 Uhr Palgucker Posts: 1342 Nutzer |
hallo Nun hab ich's. Die für mich verwunderlich "Fehldeutung" des Fragezeichens lässt sich einfach mit -noixemul abschalten. mfg Palgucker [ - Antworten - Zitieren - Direktlink - ] |
04.11.2003, 13:14 Uhr gni Posts: 1106 Nutzer |
Zitat:Das *muß* auch ohne -noixemul funktionieren. [ - Antworten - Zitieren - Direktlink - ] |
04.11.2003, 13:22 Uhr thomas Posts: 7718 Nutzer |
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/ [ - Antworten - Zitieren - Direktlink - ] |
04.11.2003, 14:30 Uhr gni Posts: 1106 Nutzer |
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. [ - Antworten - Zitieren - Direktlink - ] |
04.11.2003, 14:36 Uhr Palgucker Posts: 1342 Nutzer |
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 [ - Antworten - Zitieren - Direktlink - ] |
04.11.2003, 14:45 Uhr thomas Posts: 7718 Nutzer |
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/ [ - Antworten - Zitieren - Direktlink - ] |
-1- | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Programmierung > GCC und Fragezeichen | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |