werteübergabe
-
Ach, Anführungszeichen überlesen - benutz doch bitte den C++-Syntaxhighlighter

std::string a = argv[0]; std::string b = "variable"; if (a == b) ...
-
das ist mein problem... es muss ein pointer sein. wenn es keiner ist, bekomm ich stress mit einer funktion in locale.h
-
Etwas mehr Infos bitte zum Problem mit der locale.h.
Es gibt keine Probleme - es gibt nur Herausforderungen

-
syntax error before `{' token
Diese fehlermeldung verzweigt in die locale.h
zu der stelle:
struct lconv
{
char* decimal_point;
char* thousands_sep;
char* grouping;
char* int_curr_symbol;
char* currency_symbol;
char* mon_decimal_point;
char* mon_thousands_sep;
char* mon_grouping;
char* positive_sign;
char* negative_sign;
char int_frac_digits;
char frac_digits;
char p_cs_precedes;
char p_sep_by_space;
char n_cs_precedes;
char n_sep_by_space;
char p_sign_posn;
char n_sign_posn;
};nun und da ich nur einen vergleich zwischen string und pointer char gesucht habe, wollte ich eigentlich keine normalen strings, weil es anscheinend mit denen nicht so gut funktioniertβ
-
Wenn es möglich ist, solltest du diese Struktur so umbauen, daß sie string's verwendet. Ansonsten bietet die String-Klasse auch die Methoden c_str() (liefert einen const char*, der eventuell später ungültig werden könnte) und copy() (überträgt den String-Inhalt in einen fremden char[]-Block).
@Vergleich: Entweder du nutzt std::string, dann kannst du per == vergleichen, oder du nutzt char*, dann mußt du strcmp() verwenden.
-
dann löse ich das so:
char *variable = argv[1];
char *variable2 = x;if(std::strcmp(variable,variable2)==0)
{
...codeso sollte es funktionieren oder? also eine zuweisung einer neuen char-pointer-vaiable mit einem string, der mir dann die passwortabfrage erlaubt..
-
Wenn x etwas gültiges ist, klar, Du kannst Deine Zeiger so oft herumreichen wie Du willst.
Was spricht gegen
if (std::strcmp(argv[1], "Hallo, Passwort") == 0)?
Achja: Und wenn Du meinst Du bekommst durch irgendetwas "Stress" in der locale.h, solltest Du zunächst Verständnis- und Syntaxfehler ausräumen (uns den aktuellen Code zu zeigen kann dabei helfen :p ) anstatt zu schreiben "das geht nicht weil ich dann Stress in der locale.h bekomme". Jedenfalls ist die locale.h da ziemlich sicher nicht dran schuld.
-
#include <iostream> using namespace std; int main(int argc, char ** argv) { if (std::strcmp(argv[1], "Hallo, Passwort") == 0) { cout << "du bist drinnen\n"; } cout << "...\n"; system("PAUSE"); }Allso sagen spricht eine satte Windowsmeldung... mit Problembericht und dem so bekannten fenster
-
wie rufst du dein programm auf?
-
wie frage auch antwort sein kann... naja war dumm

wie bekomm ich aber bei einem normalen start den fehlerbericht weg, ohne auf andere funktionen (das mit der eingabeaufforderung) zu verzichten?
-
Argc überprüfen, ob argv überhaupt zwei Elemente lang ist z.B.

-
das ist es ja sonst würde es nicht in der eingabeaufforderung funktionieren mit 3 werten...
-
Lass Dir argc einfach mal ausgeben und ruf das Programm mit unterschiedlich vielen Parametern auf...
-
argc liegt bei 1
argv bei einem wert uf ich gucke mal:
2x3d2488
und ich benutze argv
-
Wenn argc 1 ist ist argv aber nur 1 Element lang, d.h. argv[0] ist gültig, argv[1] nicht mehr.
Und jetzt ruf Dein Programm mal mit einem und mit zwei Parametern in ner Kommandozeile auf (ja muss man denn hier alles vorkauen
)
-
nur noch eine frage dann wie vergrößer ich argc?
übrigens ich brauche insgesammt 3 parameter für mein programm
-
Hast Du bisher ein einziges mal ausprobiert, was für einen Wert argc hat wenn Du Dein Programm mit Parametern aufrufst?
argc ist die Anzahl der übergebenen Parameter, inklusive dem Programmnamen (also ist argc mindestens 1)
-
argc und argv hängen davon ab, wie du das Programm aufrufst (das versucht dir LordJaxom die ganze Zeit schon zu erklären):
prog argc=1 argv={"prog"} prog test argc=2 argv={"prog","test"} prog help p1 p2 p3 argc=5 argv={"prog","help","p1","p2","p3"}
-
Ich hatte eigentlich gehofft beim Ausprobieren würde sich ein Aha-Effekt einstellen

(Davon mal ab dass man das Thema in jedem besseren C-Tutorial bei der Behandlung des Programmstarts hätte nachlesen können)