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

-
Crazy_Ace
- Klauenbartrein
- Beiträge: 1422
- Registriert: 5. Jul 2007, 13:31
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?
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):
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.
-
Cell-i-Zenit
- Kopolaspinne
- Beiträge: 959
- Registriert: 5. Aug 2008, 13:42
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: 3436
- Registriert: 28. Apr 2008, 19:13
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):
----
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
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

-
Crazy_Ace
- Klauenbartrein
- Beiträge: 1422
- Registriert: 5. Jul 2007, 13:31
Beitrag
von Crazy_Ace » 23. Apr 2014, 15:20
@ bwoebi: Oh!
@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.
Wer ist online?
Mitglieder in diesem Forum: Majestic-12 [Bot] und 7 Gäste