zeiger in C

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/zeiger_in_c_31727/page_1 - zur Vollversion wechseln!


Nurmi schrieb am 16.04.2002 um 22:45

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 schrieb am 16.04.2002 um 23:21

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 schrieb am 17.04.2002 um 00:00

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. schrieb am 17.04.2002 um 02:12

Mit
*sAnfang = search
machst du die Adresse von search zum Inhalt der Variablen, auf die sAnfang zeigt


Vir@s schrieb am 17.04.2002 um 07:21

Ä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]


Nurmi schrieb am 17.04.2002 um 09:08

danke problem gelöst....

generell muß ich ja sagen daß mir java 10x lieber ist zum proggn - da gibts einfach nicht solche probs....


that schrieb am 17.04.2002 um 09:33

Zitat von Vir@s
Ä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 schrieb am 17.04.2002 um 16:44

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 schrieb am 17.04.2002 um 17:06

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.


Ringding schrieb am 17.04.2002 um 17:45

Code:
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 schrieb am 17.04.2002 um 19:11

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 schrieb am 17.04.2002 um 22:01

Zitat von Vir@s
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 schrieb am 18.04.2002 um 07:24

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