-
Ekstaza
Gast
PROG. C HILFE!!!!
Hallo,
ich bräucht mal dringende hilfe und zwar hab ich hier ne aufgabe die ich nicht ganz lösen kann unter Linux.
die Zeichenkette soll max 20 Zeichen einlesen
wenn die zeichenkette zb. ein "au" "Au" "aU" oder "AU" enthält soll das umgewandelt werden durch "ei" "Ei" "eI" und "EI" .. der soll dann die änderung ausgeben.. + die anzahl der geänderten buchstaben!
unter Dev-C++ funktionierts nur nicht unter Linux... kann mir jemand helfen?!
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int i=0;
int j=0;
char txt[20];
printf("Gib ein txt\n");
scanf("%s",txt);
for (int i=0;i<20;i++)
{
if ((txt[i]=='a') && (txt[i+1]=='u'))
{txt[i]='e';
txt[i+1]='i';
j++;
}
}
printf("%s",txt[i]);
printf("\n");
printf("\nDie Gesammtzahl betraegt %i",(2*j));
system ("PAUSE");
}
-
Aufsteiger/in
AW: PROG. C HILFE!!!!
ich denke ganz schlicht eimal, dass c/c++ oder was auch immer nicht auf linux funktionieren
such doch mal nach nem linux c/c++ compeiler(ich weiss nicht ob es so einen gibt)
korrigiert mich, wenn ich falsch liege
mfg bb
chris12
-
Aufsteiger/in
AW: PROG. C HILFE!!!!
Hm, hatte wegen Studium wenig zeit, deswegen melde ich mich erst jetzt. Dachte, vielleicht hätte jemand anderes des problems annehmen können :-)
Ok, erste Frage ist "funktioniert nicht", was heißt denn das? Also habs in ne datei geschrieben, den letzten befehl jedoch weggelassen und es mit g++ compiliert. die kompilierung lief ohne probleme. beim ausführen gabs jedoch eine speicherverletzung was denke ich auf die schleife zurückzuführen ist. du legst oben 20 bytes an.. also ein feld von 0 bis 19, dann durchläufst du das feld von 0 bis 19, greifst aber an der einen stelle auf i+1 zu und somit betrittst du speicher, der dir nicht gehört.
wenn du diesen fehler korrigierst, sollte das programm laufen.
Zu Chris: "korrigiert mich, wenn ich falsch liege":
http://de.wikipedia.org/wiki/C_%28Programmiersprache%29
http://de.wikipedia.org/wiki/GNU_Compiler_Collection
-
Aufsteiger/in
AW: PROG. C HILFE!!!!
So, habs mal schnell debuggt, hier das ergebnis:
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int i=0;
int j=0;
char txt[20];
printf("Gib ein txt\n");
scanf("%s",txt);
for (int i=0;i<19;i++)
{
if ((txt[i]=='a') && (txt[i+1]=='u'))
{txt[i]='e';
txt[i+1]='i';
j++;
}
}
printf("%s",txt);
printf("\n");
printf("\nDie Gesammtzahl betraegt %i",(2*j));
}
Berechtigungen
- Neue Themen erstellen: Ja
- Themen beantworten: Ja
- Anhänge hochladen: Ja
- Beiträge bearbeiten: Ja
-
Foren-Regeln