ubuntuusers.de

zeiger in C

Status: Gelöst | Ubuntu-Version: Ubuntu 16.04 (Xenial Xerus)
Antworten |

anskak

Anmeldungsdatum:
4. März 2017

Beiträge: Zähle...

Hallo, ich bin blutiger Anfänger in C und brauche eure Hilfe. Ich soll eine Funktion schreiben, die einen String umkehrt (ja dass der Anfangsstring nur 100 Zeichen haben darf ist sehr dilettantisch, aber wie gesagt ich bin Anfänger 😀 ). In der Variable r steht bereits der umgedrehte String. Nun will ich die Speicheradresse von s so ändern, dass sie zu r wird. Damit bin ich leider sehr überfordert 😀 Wie in Zeile 23 geht es jedenfalls nicht. Danke für eure Hilfe.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h>
#include <string.h>
char *strinv(const char *s);
int main (void){
	char hallo[100];
	scanf("%s",hallo);
	printf("%s",strinv(hallo));
	return 0;
	
}

char *strinv(const char *s){
	int i=0;
	int temp=0;
	while(s[i]!='\0') i++;
	char r[i];
	temp=i;
	while(i--){ 
		r[temp-1-i]=s[i];
	
	}
	printf("%s\n",r);
	s=p;
	return s;
}

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Wie ist denn p definiert?

anskak

(Themenstarter)

Anmeldungsdatum:
4. März 2017

Beiträge: 8

Oh sorry, das kommt davon wenn man es nicht hinbekommt und dann wahllos im programm herumpfuscht. Da stand ursprünglich r

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Wenn du einen konstenten Wert übergibst, darfst du den nicht ändern. Sonst wäre der ja nicht konstant.

das const char *s würde bedeuten, dass du den Wert nur benutzt, ihn innerhalb der Funktion aber nicht änderst. Daher kann ein s=r nicht funktionieren.

Ansonsten mal der lange Weg:

1
2
3
4
char *pointer; //pointer mit type char
pointer=r; //addresse von r zuweisen
s=pointer; /adresse von s durch die von pointer tauschen
return s;

anskak

(Themenstarter)

Anmeldungsdatum:
4. März 2017

Beiträge: 8

Okay, vielen vielen dank:)

Antworten |