peinliches problem
-
obwohl ich eigentlich viel erfahrung in c++ hab, komm ich jetzt einfach nicht
drauf, wie ich 2 strings vergleiche.
hab jetzt char sRead[255] und char sCompare[255]
in den sCompare string wird jetzt mit scanf, sprintf oder wie auch immer, etwas
vom user reingeschrieben. der sRead string enthaelt eine eingelesene zeile aus
einer datei. ich will jetzt dass die beiden strings verglichen werden und bei
uebereinstimmung "Treffer" ausgespukt wird.
ich habs mit sscanf probiert: if (sscanf(sRead,sCompare)!=0)
geht aber nicht.
wahrscheinlich liegts einfach daran, dass ich noch zu muede bin um das problem
zu erkennen, wär trozdem dankbar wenn mir einer n tipp geben wuerde, da ich
bis mittag noch was anderes machen muss.
-
(sprintf und sscanf in C++?)
-
wenn du strings hast dann benutz doch einfach
strcmp() ?
-
verdammt, das habe ich total vergessen! danke euch beiden!
-
obwohl ich eigentlich viel erfahrung in c++ hab
Selbst, wenn dir strcmp entfallen ist könntest du doch mal eben übergangsweise ne eigene Routine schreiben, die die Arbeit übernimmt und später, wenns dir wieder einfällt einfach Ersetzen.
-
ich wollte mir eben die arbeit sparen und den code klein halten.
-
das sind vielleicht vier oder fünf Zeilen.
@kingruedi: Stimmt
ist doch ganz gut
-
ich will den vier oder fünf zeilen code von dir sehen
-
int myStrcmp (char * lhs, char * rhs) { while (*lhs && *lhs == *rhs) { ++lhs; ++rhs; } return *lhs - *rhs; }
Gut sind 8 Zeilen. Das geht aber bestimmt auch besser.
-
int myStrcmp (char * lhs, char * rhs) { while (*lhs && *lhs == *rhs) { ++lhs; ++rhs; } return *lhs - *rhs; }
4 Zeilen
-
das geht bei mir eben nicht, da bei der .net version man solche pointer
seltsamerweise nicht benutzen kann.bzw. ich keine ahnung wie die pointer jetzt laufen, da sich anscheinend in
diesem bereich die regeln geändert haben.
-
Ich habs gerade mal mit dem VC7.1 compiliert und getestet. Das geht wunderbar.
-
tatsächlich, ich glaub ich brauch n bissl nachhilfe in vc 7.
wieso z.Bsp. gibts jetzt keine buffer mit unbestimmter größe wie int foo[]?
-
Hast du vielleicht ein managed C++-Projekt erstellt?
-
hab n leeres konsolen projekt, aber geht auch bei anderen projekten nicht.
-
Du startest. Dann Datei/Neu/Projekt
Dort links Visual C++-Projekte.
Auf der Rechten Seite Win32-Konsolenprojekt.
Unten den namen und optional einen anderen Pfad angeben.
Dann auf OK klicken.
Auf der nächsten Seite auf Fertigstellen Klicken.
-
worum gehts jetzt eigentlich?!?
ich dachte, ich haette gefragt wieso ein buffer mit undefinierter größe nicht mehr geht.
-
Was ist ein buffer mit undefinierter Größe?
Du meinst deinen Code:
int foo[];
Das Beispiel war noch nie legal. Das ist einfach nur Unfug.
-
oh doch und wie das ging, wenn ich glück hab find ich noch n paar beispiele
auf meinem alten pc.dieses int foo[] entsprach int *foo
-
Mit welchem Kompiler?
-
Also legal ist es, wenn die Dimension durch die Initialisierung festgelegt wird:
int foo[] = {1, 2, 3};
oder als Funktionsargument:
void func (int foo[]) {}
Ansonsten nicht, auf jeden Fall fällt mir grade keine andere Situation ein, in der es erlaubt wäre.