URL: https://www.overclockers.at/coding-stuff/zeiger_in_c_31727/page_1 - zur Vollversion wechseln!
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;
}
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 ;-)
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;
Mit
*sAnfang = search
machst du die Adresse von search zum Inhalt der Variablen, auf die sAnfang zeigt
Ä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]
danke problem gelöst....
generell muß ich ja sagen daß mir java 10x lieber ist zum proggn - da gibts einfach nicht solche probs....
Zitat von Vir@sÄhmmm...
Da is die definition von dem Zeiger wenn er da den * weglässt is es kein Pointer mehr.
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)
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.
Code:void a(const char *s) { char huhu[] = "huhu"; s = huhu; // das generiert einen fehler // *s = 'u'; } int main() { a("hello"); return 0; }
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.
Zitat von Vir@sWo 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.
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!
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025