Text in Arrays einlesen
-
Hi erstmal!
Kurze Frage
Also ich habe vor nen Text in wenn möglich ein zweidimensionales Array einzulesen!
also zum veranschaulichen Text:
ich gehe;
einkaufen;
oder;
auch;
nicht;und ich möchte jetzt zeilen und spaltenweise in ein 2d array den text einlesen und immer wenn ein ; ist eben die erste Zeichenfolge des Array beenden und in die nächste Zeile gehen.
Am Ende würde ich gerne die Möglichkeit haben, dass ich die verschiedenen Array ausgebe damit ich mir ansehen kann was denn nun wirklich drinnen steht!Hab schon folgendes probiert:
int main(void)
{
int i=1;
char z;
FILE *testdatei;
char arr[i];int q;
int r=1;testdatei=fopen("DIE DATEI EBEN","r");
for(i=1; i<100;i++)
{
z=fgetc(testdatei);
if(z!=';')
{
arr[i]=z;
}if (z==';')
{i=99;
}
}
for(q=1; q<100;q++)
{
printf("%c",ary[r]);
r++;
getchar();}
}
Es klappt auch mehr oder minder die Ausgabe der ersten Zeile, nur erstens leider untereinander die Zeichen, nicht nebeneinander und zweitens schreibt er mir danach nur noch irgendwelche Zeichen an, aber das ist wahrscheinlich weil die Zeile ja nach dem ; leer ist und er nichts bestimmtes mehr einliest, also schreibt er irgendwas, oder???
Also, wenn ihr mir vielleicht helfen könnt, wie ich die zeilen in ein Array einlesen kann, sodass ich mir dann die richtigen Wörter oder Zeichen wieder ausgeben kann, einfach so wie sie auch in der Textdatei stehen, dann wärs cool!
Das ausgeben ist nur zur kontrolle eben, das wahre problem liegt am einlesen mehrerer Zeilen in Arrays, da weiß ich nicht mehr genau weiter!Danke euch noch!
P,S,; Kenn mich mit Forenbefehlen net so aus, also net schimpfen wenn der Code schlecht formatiert ist, ich sende ihn schön formatiert ab, aber irgendwie bleibt der ned so schön wenn er dann als beitrag drin steht!
Alexander
-
Also kein Wunder, dass es nur die erste Zeile ein liest...
Sobald es ein ';' entdeckt wird initialisierst du i mit 99...Die zeichen sind untereinander, weildu ein getchar(); drin hast, d.h. man muss <ENTER> drücken => Zeilenumbruch.
Nimm das getchar(); raus, oder vor die Letzte Klammer.int main(void) { int i; char z; FILE *testdatei; char arr[100]; int r; testdatei=fopen("DIE DATEI EBEN","r"); for(i=0; i<100;i++) { z=fgetc(testdatei); if(z!=';') { arr[i]=z; } if (z==';') { arr[i]=' '; //Anstelle eines ';' wird ein Leerzeichen geschrieben } } for(r=0; r<100;r++) //Wiso q geht doch auch mit 'r' { printf("%c",ary[r]); r++; } getchar(); }
Übrigens ein array von der Grösse 100 geht von Arrya[0] bis und mit Array[99] nicht von Array[1] bis Array[100]..
-
Wie viele Zeilen möchtest du in dein 1-Byte großes Array speichern, hm ?
Ist das ein neues Komprimierungsverfahren auf atomarer Ebene oder so, hm ?
-
08mmarte schrieb:
Also kein Wunder, dass es nur die erste Zeile ein liest...
Sobald es ein ';' entdeckt wird initialisierst du i mit 99...Die zeichen sind untereinander, weildu ein getchar(); drin hast, d.h. man muss <ENTER> drücken => Zeilenumbruch.
Nimm das getchar(); raus, oder vor die Letzte Klammer.int main(void) { int i; char z; FILE *testdatei; char arr[100]; int r; testdatei=fopen("DIE DATEI EBEN","r"); for(i=0; i<100;i++) { z=fgetc(testdatei); if(z!=';') { arr[i]=z; } if (z==';') { arr[i]=' '; //Anstelle eines ';' wird ein Leerzeichen geschrieben } } for(r=0; r<100;r++) //Wiso q geht doch auch mit 'r' { printf("%c",ary[r]); r++; } getchar(); }
Übrigens ein array von der Grösse 100 geht von Arrya[0] bis und mit Array[99] nicht von Array[1] bis Array[100]..
Oder noch besser nim in Zeile 23 anstatt ein Leerzeichen '\n'...dan stehen sie unter einander...
EDIT: Nimm auf jeden Fall das r++; nach printf("%c",ary[r]); raus, sonst gibt es dir nur jedes zweite zeichen aus...und ändere ary in arr...wäre eventuell sinvoll, wenn es funktionieren sollte...
-
08mmarte du bist ein Genie!
Ich danke dir, so wie ich es mir vorgestellt habe!du bist echt eine hilfe gewesen!
Gruß
Alexander
-
war eigentlich nur logisches überlegen, etwas was ich auch nicht immer mache..
-
Noch ne Frage!
Gibt es ne möglichkeit das ich dinge einlese und umwandle sozusagen?
also wenn ich einen text habe wo drinnen steht aberhallo das mir das irgendwie übersetzt, nicht in eine andere sprache sondern anhand einer übersetzungstabelle die ich irgendwie einlese??
würde gerne eine bestimmte liste einlesen, eine codefolge und die dann irgendwie umwandeln und umgewandelt ausgeben!
geht sowas und wenn ja, ist das einfach??? und wie würdest du es anpacken???
-
ich denke schon, dass es möglich ist...
Wie du das am besten machst, kann ich dir nicht sagen, da ich selber noch nicht all zu lange programmiere (2 Monate)...
Aber die "profis" können dir sicher helfen
-
C_Popel schrieb:
Noch ne Frage!
Gibt es ne möglichkeit das ich dinge einlese und umwandle sozusagen?
also wenn ich einen text habe wo drinnen steht aberhallo das mir das irgendwie übersetzt, nicht in eine andere sprache sondern anhand einer übersetzungstabelle die ich irgendwie einlese??
würde gerne eine bestimmte liste einlesen, eine codefolge und die dann irgendwie umwandeln und umgewandelt ausgeben!
geht sowas und wenn ja, ist das einfach??? und wie würdest du es anpacken???Du solltest dich mal in Richtung Datenbanken schlau machen. Wenn dir das übertrieben scheint, kannst du für kleine Geschichten natürlich auch eine Textdatei mit deinen Ersetzungen basteln, aber eine Datenbank wäre grundsätzlich geeigneter...