Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Patternbehandlung

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
11.04.2005, 15:44 Uhr
~dirweis
Gast


Moin,

wie schaffe ich es denn, dass ich Patterns in mein Programm (z. B. als argv[1]) übergebe, ohne dass der Benutzer sie in Anführungszeichen stellen muss? Ich weiss noch nicht mal, warum das nur bei Patterns so sein muss, aber anders hab ich sie noch nicht gekriegt...

Grüße
main(){int i=0,j;for(j=1386550183;i!=90;++i,j=i<32?j:i<64?709180050:i<96?18130861:0)putchar((i+1)%18?j&1<<i?64:32:10);}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
11.04.2005, 15:51 Uhr
~dirweis
Gast


P.S.:
wie modifiziere ich hier eigentlich meinen benutzer?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
11.04.2005, 15:58 Uhr
Manuelito




Zitat:

wie modifiziere ich hier eigentlich meinen benutzer?


um deinen Benutzer zu modifizieren, musst du zuerst mal einer sein


Zitat:

main(){int i=0,j;for(j=1386550183;i!=90;++i,j=i<32?j:i<64?709180050:i<96?18130861:0)putchar((i+1)%18?j&1<<i?64:32:10);}


soll man das erkennen können???

Was hälst du davon:

C++:
int main()
{
int i=0,j;
for(j=1386550183;i!=90;++i,j=i<32?j:i<64?709180050:i<96?18130861:0)
putchar((i+1)%18?j&1<<i?64:32:10);
return 0;
}


ich kenn deinen programmierstyl zwar nicht, aber ich find das übersichtlicher
--
Verstand ist das, was am gerechtesten unter den Menschen verteilt ist.
Jeder glaubt, er hätte genug davon.
-- unbekannt

Dieser Post wurde am 11.04.2005 um 15:59 Uhr von Manuelito editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
11.04.2005, 16:05 Uhr
virtual
Sexiest Bit alive
(Operator)


@Manuelito
Ich glaube, das sollte einfach eine Coole signature sein... - Wenngleich mir nicht klar ist, warum man eine Signature als nicht-Benutzer hat...

@Kein Benutzer
Patterns werden in der Regel bereits von der Shell ausgewertet und laden daher bereits ausgwertet in argv. Ausnahme ist nur dann, wenn es keinen Dateinanmen gibt, der dem pattern entspricht. Wie du an das Pattern an sich kommst, ist systemabh. , ggf wird dies auch nicht unterstützt.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
11.04.2005, 16:52 Uhr
dirweis



den benutzer hatte ich bis zu meiner anfrage doch schon erstellt... war nur zu faul, mich einzuloggen. aber ich seh schon, da oben steht 'profil'. klingt schonmal vielversprechend ;-)


Zitat:
Wie du an das Pattern an sich kommst, ist systemabh


ah echt?!? mein dozent hat auf jeden fall ein anderes linux als ich und hat uns allen erklärt, dass die patterns bei unseren programmen in anführungsstrichen übergeben werden müssen. nur warum, weiss ich leider nicht mehr. aber systemprogramme meines os können es doch auch... und die sind ja schließlich auch in C geschrieben... muss das programm vielleicht erst ein systemprogramm werden?

danke für die antworten!

und wieder mal... meine hammercoole sig.

main(){int i=0,j;for(j=1386550183;i!=90;++i,j=i<32?j:i<64?709180050:i<96?18130861:0)putchar((i+1)%18?j&1<<i?64:32:10);}
--
main(){int x=0,y=1228443207;for(;x<105;++x,y=x<32?y:x<64?3392743058u:x<96?611502372:137)putchar((x+1)%21?y&1<<x?64:32:10);}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
12.04.2005, 13:48 Uhr
0xdeadbeef
Gott
(Operator)


Innerhalb des Programms kannste da nichts machen, die Argumente parst schon die shell auseinander. Du kannst natürlich, statt den Kram in Anführungsstriche zu setzen, auch eventuelle Sonderzeichen escapen. Das sähe dann zum Beispiel so aus:

sh:

$ cat t.c
#include <stdio.h>
int main(int argc, char *argv[]) {
  puts(argv[1]);
  return 0;
}
$ gcc t.c
$ ./a.out \"\$foo\ bar\"
"$foo bar"


...ich bezweifle aber, dass es das ist, was du willst. Wenn keine Sonderzeichen und Spaces in der Pattern vorkommen, musste den Kram natürlich auch nicht escapen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
19.04.2005, 12:55 Uhr
dirweis



@oxdeadbeef

nee, meine frage ist ja, wie ich die patterns ohne anführungsstriche oder sonstige zeichen übergebengeben kann. eben wie einen stinknormalen string. wie gesagt, bei systemprogrammen ist es ja auch möglich. da muss man escape-backslashes ja wirklich nur wegen whitespaces verwenden. das würde ich gerne realisieren. ein pattern wie *.w??? oder auch [^s]* ohne sonderzeichen zu übergeben.
aber trotzdem danke erstmal.

gruß
--
main(){int x=0,y=1228443207;for(;x<105;++x,y=x<32?y:x<64?3392743058u:x<96?611502372:137)putchar((x+1)%21?y&1<<x?64:32:10);}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
19.04.2005, 14:10 Uhr
Th



Also beim MSVC funktioniert es mittels einer zusätzlichen Objektdatei.

Hier ein Ausschnitt aus der MSVC:

Zitat:

Microsoft Specific —>

When running a C program, you can use either of the two wildcards — the question mark (?) and the asterisk (*) — to specify filename and path arguments on the command line.

Command-line arguments are handled by a routine called _setargv (or _wsetargv in the wide-character environment), which by default does not expand wildcards into separate strings in the argv string array. You can replace the normal _setargv routine with a more powerful version of _setargv that does handle wildcards by linking with the Setargv.obj file. If your program uses a wmain function, link with Wsetargv.obj.

To link with Setargv.obj or Wsetargv.obj, use the /link option. For example:

cl typeit.c /link setargv.obj
The wildcards are expanded in the same manner as operating system commands. (See your operating system user's guide if you are unfamiliar with wildcards.) Enclosing an argument in double quotation marks (" ") suppresses the wildcard expansion. Within quoted arguments, you can represent quotation marks literally by preceding the double-quotation-mark character with a backslash (\). If no matches are found for the wildcard argument, the argument is passed literally.

END Microsoft Specific

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
19.04.2005, 14:25 Uhr
0xdeadbeef
Gott
(Operator)


@dirweis: Der Kram wird immer erst von der Shell zerpflückt und danach ans Programm weitergegeben. Wenn du sowas machen willst, solltest du dir nen guten Plan machen, wie das nachher genau aussehen soll, und dir ne eigene Shell schreiben. Ansonsten seh ich da keine Chance.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: