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
Hilfe beim programmieren in C
- Cell-i-Zenit
- Kopolaspinne
- Beiträge: 959
- Registriert: 5. Aug 2008, 13:42
Hilfe beim programmieren in C
-|-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
Re: Hilfe beim programmieren in C
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?
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):
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.
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);
}
}
}
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.
- Cell-i-Zenit
- Kopolaspinne
- Beiträge: 959
- Registriert: 5. Aug 2008, 13:42
Re: Hilfe beim programmieren in C
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
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
Re: Hilfe beim programmieren in C
@Crazy_Ace Er will C lernen und du zeigst ihm C++… Eher nicht so gut
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:
Alternativ (auf POSIX Systemen und Windows unterstützt, aber nicht Standard):
----
Ja klar dass ich zu spät dran bin (Warum ich Crosspostings hasse und so weiter...)
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));
Code: Alles auswählen
test = strdup("abababababa");
----
Ja klar dass ich zu spät dran bin (Warum ich Crosspostings hasse und so weiter...)
Bogs sind meine Spezialität - Signaturen sind eigentlich doch überflüssig...
- Cell-i-Zenit
- Kopolaspinne
- Beiträge: 959
- Registriert: 5. Aug 2008, 13:42
Re: Hilfe beim programmieren in C
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
Re: Hilfe beim programmieren in C
@ bwoebi: Oh!
@TA: Gerne, auch wenn es nicht geholfen hat, und weiterhin viel Erfolg.
@TA: Gerne, auch wenn es nicht geholfen hat, und weiterhin viel Erfolg.
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 50 Gäste