Hilfe beim programmieren in C

Hier kann über alles diskutiert werden, wirklich alles. Betonung liegt auf "diskutiert", das ist also kein Freischein zum Spammen.
(Beitragszähler deaktiviert)
Antworten
Benutzeravatar
Cell-i-Zenit
Kopolaspinne
Beiträge: 959
Registriert: 5. Aug 2008, 13:42

Hilfe beim programmieren in C

Beitrag von Cell-i-Zenit » 22. Apr 2014, 19:51

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 :)
-|-Signatur-|-
FalscherHase hat geschrieben: Du kannst doch nicht jeden wildfremden als Mod einstellen. Derjenige muss doch auch die nötige Ignoranz mitbringen, offensichtliche Tatsachen zu übersehen und in kompletten Kurzschlusshandlungen seine Macht zu missbrauchen ;)

Benutzeravatar
Crazy_Ace
Klauenbartrein
Beiträge: 1422
Registriert: 5. Jul 2007, 13:31

Re: Hilfe beim programmieren in C

Beitrag von Crazy_Ace » 22. Apr 2014, 22:19

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.
Inaktiv in w7, aktiv in w8.

Relinquished hat geschrieben: Der Sinn des Spiels ist es, den User Raum und Zeit vergessen zu lassen und abhängig zu machen.
Alles, was dagegen wirkt, schadet dem Spiel nur.

Benutzeravatar
Cell-i-Zenit
Kopolaspinne
Beiträge: 959
Registriert: 5. Aug 2008, 13:42

Re: Hilfe beim programmieren in C

Beitrag von Cell-i-Zenit » 22. Apr 2014, 23:11

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
-|-Signatur-|-
FalscherHase hat geschrieben: Du kannst doch nicht jeden wildfremden als Mod einstellen. Derjenige muss doch auch die nötige Ignoranz mitbringen, offensichtliche Tatsachen zu übersehen und in kompletten Kurzschlusshandlungen seine Macht zu missbrauchen ;)

bwoebi
Administrator
Beiträge: 3290
Registriert: 28. Apr 2008, 19:13

Re: Hilfe beim programmieren in C

Beitrag von bwoebi » 22. Apr 2014, 23:17

@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...)
Bogs sind meine Spezialität - Signaturen sind eigentlich doch überflüssig...

Benutzeravatar
Cell-i-Zenit
Kopolaspinne
Beiträge: 959
Registriert: 5. Aug 2008, 13:42

Re: Hilfe beim programmieren in C

Beitrag von Cell-i-Zenit » 22. Apr 2014, 23:21

yo aber deine Erklärung/Beispielcode hätte ich auch nicht verstanden^^ aber es hat sich geklärt :)
-|-Signatur-|-
FalscherHase hat geschrieben: Du kannst doch nicht jeden wildfremden als Mod einstellen. Derjenige muss doch auch die nötige Ignoranz mitbringen, offensichtliche Tatsachen zu übersehen und in kompletten Kurzschlusshandlungen seine Macht zu missbrauchen ;)

Benutzeravatar
Crazy_Ace
Klauenbartrein
Beiträge: 1422
Registriert: 5. Jul 2007, 13:31

Re: Hilfe beim programmieren in C

Beitrag von Crazy_Ace » 23. Apr 2014, 15:20

@ bwoebi: Oh! :D

@TA: Gerne, auch wenn es nicht geholfen hat, und weiterhin viel Erfolg.
Inaktiv in w7, aktiv in w8.

Relinquished hat geschrieben: Der Sinn des Spiels ist es, den User Raum und Zeit vergessen zu lassen und abhängig zu machen.
Alles, was dagegen wirkt, schadet dem Spiel nur.

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 43 Gäste