Hallo CStoll,
hmm joa okay danke erstmal. Leider kann ich das nicht mappen, da auch aus unterschiedlichen Dateien gelesen wird.
Naja egal
Danke euch!
~cp :xmas2:
Du kannst in einer Datei nicht einfach Zeichen rausschneiden oder dazwischenschieben, bestenfalls die vorhandenen Zeichen ersetzen. Also müßtest du von deinem Fundort an alle Zeichen bis zum Dateiende einlesen und hinter deinem Ersatztext neu einfügen.
(wenn du das öfter machen sollst, empfiehlt es sich, die Datei einmal komplett einzulesen und dann im RAM zu bearbeiten)
ich denke auch, daß es nicht funktioniert. schließlich handelt es sich bei ((long)0x01 & (char)0x01) um einen konstanten ausdruck der keine daten im speicher ablegt. wenn das funktionieren würde, dann hieße das ja, daß das ergebnis von arithmetisch-logischen operationen vom endiansystem abhinge!
ich würde es so machen:
int x=1;
if(*(char*)&x)
printf("intel\n"); // ich kann mir nie merken,
else // ob intel big oder little endian ist ;)
printf("motorola\n");
immer vorausgesetzt, daß sizeof(int)>1 ist und daß der compiler das nicht optimiert.
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]);