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

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

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

[ - 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.
.