amiga-news 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... ;-)
--
:boing: Micha :boing:

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:
Palgucker:
Die für mich verwunderlich "Fehldeutung" des Fragezeichens lässt sich einfach mit -noixemul abschalten.

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:
thomas:
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.

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:
Du mußt das Fragezeichen in Hochkomma einschließen, damit es beim Programm ankommt.
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.
.