zeiger in C
Nurmi 16.04.2002 - 22:45 765 12
Nurmi
OC Addicted
|
wie setze ich einen Zeiger eines stringarrays wieder auf den anfang?
ich habs mit
char *sAnfang = search; sAnfang++; *sAnfang = search;
gemacht - funkt aber nicht...wie geht das sonst?
bitte eine schnelle Antwort wenn möglich - danke
MfG NuRmi
falls wen das ganze programm interessiert... hier bitte den ersten macht er den zweiten replace aber nicht da er beim zweiten durchlauf nicht mehr am anfang vom array steht... #include <stdio.h>
void SearchAndReplace(const char *source, const char *search, const char *replace, int destLen, char *dest, int *errCode){
const char *sAnfang = search; const char *rAnfang = replace; int treffer = 1;
while(*source){ if (*source == *search){ printf("treffer"); while(*sAnfang && treffer){ if (*source != *sAnfang) treffer = 0; *sAnfang++; *source++; } if (treffer){ while(*rAnfang){ *dest = *rAnfang; *rAnfang++; *dest++; } } treffer = 1; }
*dest = *source; *dest++; *source++; } }
int main(void) { char str1[30]; SearchAndReplace("Thomas Neumayer","T","XYZ",30,str1,0); printf("%s",str1); return 0; }
|
Bimminger
christoph-bimminger.at
|
char *sAnfang = search; char *sDummy; sDummy=sAnfang; //zwischenspeichern sAnfang++;
...... sAnfang=sDummy; //zurücksichern ......
//sorry wenns net stimmt ... is scho spät, i denk um de zeit nimma. aba evtl stimmts ja ;-)
|
Ringding
Pilot
|
wie du ursprünglich geschrieben hast, nur ohne stern. du willst ja nur den pointer setzen und nicht den inhalt verändern. also einfach sAnfang = search;
|
M.I.P.S.
Big d00d
|
Mit *sAnfang = search machst du die Adresse von search zum Inhalt der Variablen, auf die sAnfang zeigt
|
Vir@s
Code Monkey
|
Ähmmm... Da is die definition von dem Zeiger wenn er da den * weglässt is es kein Pointer mehr. Um einen Zeiger auf den Anfang zu setzten einfach nochmal neu zuweisen: pOnSomething = pOnSomethingElse; pOnSomething = &something; So sollte des gehen! Und wenn du const pointer verwendest kannst du sie nicht mehr zurücksetzten da diese nicht mehr veränderbar sind. Einfach des const weggeben! Mfg, Vir@s [edit] sorry ihr habts die dritte Zeile gemeint - aber die kommt im wirklichem Programm gar ned vor  Es sind sicha die const pointer! [/edit]
Bearbeitet von Vir@s am 17.04.2002, 07:22
|
Nurmi
OC Addicted
|
danke problem gelöst....
generell muß ich ja sagen daß mir java 10x lieber ist zum proggn - da gibts einfach nicht solche probs....
|
that
Hoffnungsloser Optimist
|
Ähmmm...
Da is die definition von dem Zeiger wenn er da den * weglässt is es kein Pointer mehr. Was erzählst du da?  char c; // c ist ein char char *p; // *p ist ein char, p ist ein Pointer auf char und daher kann man machen: *p = c; // c wird dorthin kopiert, wohin p zeigt oder c = *p; // umgekehrt oder p = &c; // p zeigt auf c
|
Ringding
Pilot
|
Außerdem heißt const char * nicht, dass der Pointer konstant ist, sondern nur dass das, worauf der Pointer zeigt, nicht geändert werden darf (const bezieht sich immer auf das, was unmittelbar danach steht, also in diesem Fall char - es ist ein Pointer auf einen konstanten character)
|
Vir@s
Code Monkey
|
glaubt was ihr wollt  Darum gings doch gar nicht that - des is schon richtig was du mir erzählst aber des hab ich ned gmeint. und const char *pointer bedeuted des du die location ned verändern derfst.
Bearbeitet von Vir@s am 17.04.2002, 17:09
|
Ringding
Pilot
|
void a(const char *s)
{
char huhu[] = "huhu";
s = huhu;
// das generiert einen fehler
// *s = 'u';
}
int main()
{
a("hello");
return 0;
}
Compiliert ohne Probleme, sollte aber nach deiner Aussage nicht.
|
Vir@s
Code Monkey
|
Wo zur hölle liest du?
Ich habe gesagt des das nicht funktionieren wird:
const char *pOnSomething = "lalalala"; char *pOnAlsoSomething = "hugo";
pOnSomethin = pOnAlsoSomething;
Des hab ich gesagt und nichts anderes.
|
that
Hoffnungsloser Optimist
|
Wo zur hölle liest du?
Ich habe gesagt des das nicht funktionieren wird:
const char *pOnSomething = "lalalala"; char *pOnAlsoSomething = "hugo";
pOnSomethin = pOnAlsoSomething;
Des hab ich gesagt und nichts anderes. Natürlich wird das nicht funktionieren, weil ein "g" fehlt. Das ist aber auch der einzige Fehler.
|
Vir@s
Code Monkey
|
Ups ich hab da ja einige Tippfehler....
Beispiel war so gemeint:
const char *pOnSomething = "lalalala"; char *pOnAlsoSomething = "hugo";
*pOnSomething = *pOnAlsoSomething;
Sodala jetzt stimmts....
Außerdem gehts nur um den const effekt - des ma den inhalt von dem Ding nimma verändern kann!
|