Eine Stringumwandlung würde das ding sowieso mit % und / in die Stellen zerlegen. Wenn man dieses verfahren nun ein klein wenig umschreibt, kommt man zu lösung:
int HasDigit(int value, int digit)
{
while (value) {
if ((value % 10) == digit) return 1;
value /= 10;
}
return 0;
}
Wenn man noch nicht so recht einen plan hat ist das Problem aber gar nicht so trivial, sodass ich doch mal nen code geschrieben habe. Allerdings solltest du dir selbst denn Gefallen tun und das Ding verstehen und nicht nur per Copy & Paste benutzen.
Gruß
template
schawee schrieb:
soweit hab ich alles hin bekommen,
aber wieso gibt er er mir bei lerren zeilen,die vor hergehende wieder mit aus?
kann ich das ändern?
Klar. Zeig her was du gemacht hast.
????????????????? schrieb:
volkard was spricht gegen ((void)0) am Schluß??
normalerweise hüpft man mit __asm int 3; in den debugger. das ist kein ausdruck mehr und deshalb ensteht das problem erst. das _asm int 3; kann auch nicht in einer funktion verpackt werden, weil sonst der debugger in die funktion springt statt genau auf die zeile, wo das makro steht.
CStoll schrieb:
Bei jeder Deklaration wird Speicher angelegt
... Definition ...
___ schrieb:
das stimmt so nicht es wird erst bei zuweisung fuer variable speicher angelegt zumindest ist das beim gcc4 so!!!!
Wenn eine Variable nie benutzt wird, dann kann ein Compiler sowas sicherlich wegoptimieren. Das ist aber ein Spezialfall. Grundsätzlich ist deine Aussage nicht korrekt.
Falsche Frage.
Elementare Datentypen sind die Grunddatentypen wie int,char,float ...
Datentypen im allgemeinen können auch selbst definierte Datentypen wie struct,union, enum sein.
Beide können sowohl Variablen als auch Konstanten sein.
Kurt
fluxy schrieb:
nu jetzt verwirr den armen jungen mal nicht zu sehr....
Was heißt hier verwirren? Ich wollte _dich_ lediglich darauf aufmerksam machen, dass _du_ eine völlig falsche Information gabst, die den OP viel mehr verwirren könnte.
Gruß Caipi
Dieser Thread wurde von Moderator/in kingruedi aus dem Forum Linux/Unix in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?
Dieses Posting wurde automatisch erzeugt.
ganz "einfach":
erste zahl AND NOT (1 << bitnummer)
zweite zahl AND (1 << bitnummer)
beides ORen
AND und NOT sind dabei & respektive ~
edit: hm, war wohl zu langsam...
Bei den ANSI C-funktionen must du immer enter drücken. Vorher wird nichts eingelesen.
Und bei mir wird der String bis vors # ausgegeben (natürlich darf der String kein Leerzeichen enthalten sonst wirds eine Endlosschleife. Naja stürzt sicher bald mit Zugriffsverletzung ab ).
ich wusste nicht dass es unsigned ist, werde wohl das nächste mal in die headerdatei schauen müssen. Und ich hab gesagt dass ich ins man geschaut habe.
Und die "&" hab ich vergessen . Bei mir hab ich die ja .
Vielen dank jetzt gehts!!
pack die Strings in ein Array, dann kannst du per Index darauf zugreifen:
char* strings[]={"first","second","third",...}
int stringcount=sizeof(strings)/sizeof(strings[0]);
for(int i=0;i<stringcount;++i)
printf("String %d = %s\n",i,strings[i]);
scanf dient zum Einlesen der Daten (denk dran, daß du genug Platz reservieren mußt), strlen berechnet die Länge einer Zeichenkette und printf gibt etwas auf dem Monitor aus. Daraus ein Programm zu basteln überlasse ich dir als Hausaufgabe :xmas2:
Daniel E. schrieb:
Ich bin mir gerade nicht sicher, ob das in C99 anders ist, aber wenigstens ist es ziemlich hässlich.
In C99 hast du zwingend Prototypen, da kann das nicht passieren.