Seite 1 von 1

Hilfe beim programmieren in C

Verfasst: 22. Apr 2014, 19:51
von Cell-i-Zenit
achja das FW-Forum^^ wo einem immer geholfen wird :O

http://pastebin.com/9jcxBUZ6

Das Programm so wird nicht compiliert, es heißt immer "Segmentation fault" ... ich konnte es eingrenzen auf den Bereich text = 'x'; nur was ist da falsch?

zur Info das Programm sollte eine Zeichenkette auf Vokale untersuchen und diese durch ein X ersetzen.

Danke :)

Re: Hilfe beim programmieren in C

Verfasst: 22. Apr 2014, 22:19
von Crazy_Ace
Ich muss gestehen, dass ich bislang nur mit <iostream> und dem anfänglichen void main() gearbeitet habe - dennoch habe ich mich mal deines Problems angenommen und bis auf die Tatsache, dass es noch immer abschmiert, führt es so zumindest die Substitution aus. Muss das ganze mit stdio.h gemacht sein?
SpoilerShow

Code: Alles auswählen

    
#include <stdio.h>
    
	int main(void){
		char text[] = "aibaoihdxri";
		char p = *text;
		printf(text);
		for(int i = 0; *text!=0; i++){
			if(text[i]=='a' || text[i]=='e' || text[i]=='i' || text[i]=='o' || text[i]=='u')
			{
				text[i] = 'x';
				printf(text);
			}
		}
	}
Falls es auch anders sein kann - wir haben mal "Drei Chinesen mit dem Kontrabass" ersetzen müssen in den Strophen, das sah dann so aus (halt statt dem zweiten Überlauf über die Vokale dann das "x" nehmen):
SpoilerShow

Code: Alles auswählen

#include <iostream>
using namespace std;

void main()
{
	char Text[] = "Drei Chinesen mit dem Kontrabass\nsassen auf der Strasse und erzahlten sich was.\nDa kam die Polizei: \"Ja, was ist denn das?!\"\n\"Drei Chinesen mit dem Kontrabass!\"\n";
	char Vokale[] = "aeiou";
	for(int k  = 0; k < 6; k++){
		cout << Text << "\n\n";
		for(int l = 0; l < 160; l++){
			if(Text[l] == Vokale[0] || Text[l] == Vokale[1] || Text[l] == Vokale[2] || Text[l] == Vokale[3] || Text[l] == Vokale[4] || Text[l] == Vokale[5]){
				Text[l] = Vokale[k];
			}
		}
	}
		
}

Hoffe ich konnte helfen.

Edit: Und huch, gar nicht gesehen, dass es bei dir nicht mal kompiliert hat - bei mir (VS2010) funktioniert das mit dem Kompilieren. Nur vor der For-Schleife knackt er weg und gibt die Fehlermeldung "Das Programm funktioniert nicht mehr." aus.

Re: Hilfe beim programmieren in C

Verfasst: 22. Apr 2014, 23:11
von Cell-i-Zenit
Ich hatte auch in einem anderem Forum auch um Hilfe gefragt und dort war die Hilfe sehr ausführlich:

Es gibt 3 Segmente: Text, Stack und Heap und mein Aufruf am Anfang speicher meinen "Text" in "Text". Der ist für Konstanten und anderes da. Aber nur Readonly dh ich kann NICHTS! verändern. Deswegen geht das Programm nicht. Ich muss es in den "Stack" schreiben. Das geht indem ich das als Array caste: char text[100];

dann geht das ganze auch :)

trotzdem danke für deine Mühe

Re: Hilfe beim programmieren in C

Verfasst: 22. Apr 2014, 23:17
von bwoebi
@Crazy_Ace Er will C lernen und du zeigst ihm C++… Eher nicht so gut ;-)
Cell-i-Zenit hat geschrieben:Das Programm so wird nicht compiliert, es heißt immer "Segmentation fault" ... ich konnte es eingrenzen auf den Bereich text = 'x'; nur was ist da falsch?

Also entweder kompiliert es und du kriegst ein Segfault zur Laufzeit oder das Kompilieren an sich geht nicht. Aber nicht beides gleichzeitig.

Das Problem ist, dass du nicht in einen statischen String schreiben darfst.
Du müsstest den String vom Heap allokieren:

Code: Alles auswählen

#define STRING "abababababa"
test = malloc(sizeof(STRING));
memcpy(test, STRING, sizeof(STRING));
Alternativ (auf POSIX Systemen und Windows unterstützt, aber nicht Standard):

Code: Alles auswählen

test = strdup("abababababa");

----

Ja klar dass ich zu spät dran bin :-P (Warum ich Crosspostings hasse und so weiter...)

Re: Hilfe beim programmieren in C

Verfasst: 22. Apr 2014, 23:21
von Cell-i-Zenit
yo aber deine Erklärung/Beispielcode hätte ich auch nicht verstanden^^ aber es hat sich geklärt :)

Re: Hilfe beim programmieren in C

Verfasst: 23. Apr 2014, 15:20
von Crazy_Ace
@ bwoebi: Oh! :D

@TA: Gerne, auch wenn es nicht geholfen hat, und weiterhin viel Erfolg.