Laden...

Wie kann ich 7 Zeilen mit je 11 Zeichen in eine Textdatei speichern?

Erstellt von Loofsy vor 3 Jahren Letzter Beitrag vor 3 Jahren 779 Views
L
Loofsy Themenstarter:in
32 Beiträge seit 2020
vor 3 Jahren
Wie kann ich 7 Zeilen mit je 11 Zeichen in eine Textdatei speichern?

Hallo an alle,

Gegeben sei das folgende Byte-Array:


byte[] array = {32, 32, 67, 67, 32, 32, 32, 35, 32, 35, 32,
                       32, 67, 32, 32, 67, 32, 32, 35, 32, 35, 32,
		       67, 32, 32, 32, 32, 32, 35, 35, 35, 35, 35,
		       67, 32, 32, 32, 32, 32, 32, 35, 32, 35, 32,
		       67, 32, 32, 32, 32, 32, 35, 35, 35, 35, 35,
		       32, 67, 32, 32, 67, 32, 32, 35, 32, 35, 32,
		       32, 32, 67, 67, 32, 32, 32, 35, 32, 35, 32 };

Nun soll ich dieses array in eine Textdatei speicher (klappt einwandfrei) und mit einer anderen Methode in einer Console ausgeben. Der Clou ist nun das ich nur 7 Zeilen mit je max 11 zeichen an platz verwenden soll.

Meine derzeitige lösung:


public void ESAOut(string pfad)
        {
            FileStream reader =  File.Open(pfad, FileMode.Open);

            byte[] array = new byte[reader.Length];
            reader.Read(array, 0, (int)array.Length);



                for (int i = 0; i < array.Length; i++)
                {
                    Console.Write("{0} {0} {0} {0} {0} {0} {0} {0} {0} {0} {0} \n", (byte)array[i]);
                    
                }
            
            reader.Close();
            Console.ReadLine();
        }

ist nicht so die lösung.

wer kann mir helfen. ich hänge da seit 3 Wochen dran.

J
251 Beiträge seit 2012
vor 3 Jahren

Wo hakt es bei Dir genau?

Wenn ich es richtig erkenne, schreibst Du pro Zeile 11mal das selbe Element und du bekommst 77 Zeilen.

Theo. genügen 2 Schleifen. Eine 7er Schleife und eine 11er Schleife.

A
7 Beiträge seit 2020
vor 3 Jahren

Hallo erstmal,
Würde es nicht einfach so gehen, wenn du es in ein 2 Dimensionales Array speicherst, mit der Größe [7 , 11] und dann durch 2 For-Schleifen das ganze durchgehst und jedes mal schreiben lässt?
Also so



public void ESAOut(string pfad)
        {
            FileStream reader = File.Open(pfad, FileMode.Open);

            byte[] array = new byte[reader.Length];
            reader.Read(array, 0, (int)array.Length);

            byte[,] array2d = new byte[7, 11];
            int i = 0;
            for(int i = 0; i < 11; i++)
            {
                for (int j = 0; j < 11; j++)
                {
                    array2d[j, i] = array[i];
                    i++;
                    Console.Write(array2d[j, i] + " ");
                }
                Console.WriteLine("");
            }



                reader.Close();
                Console.ReadLine();
        }


5.657 Beiträge seit 2006
vor 3 Jahren

Du schreibst "Textdatei", liest aber Binärdaten (Bytes) aus. Wie speicherst du denn die Daten in die Datei?

Und bei den Zeilenumbrüchen hilft dir evtl. der Modulo-Operator % weiter.

Weeks of programming can save you hours of planning

C
2.121 Beiträge seit 2010
vor 3 Jahren

Bevor man dir eine Antwort geben kann, sollte zuerst klar sein was du genau machen willst.
Unter der Beschreibung "nur 7 Zeilen mit je max 11 zeichen an platz" kann ich mir nichts vorstellen. Was bedeutet das?

T
50 Beiträge seit 2014
vor 3 Jahren

also wenn das Array vorgegeben ist denke ich ist die Lösung:

32, 32, 67, 67, 32, 32, 32, 35, 32, 35, 32
...

" cc # # "
...
sind doch ASCII-Codes im Array, oder??
so bekäme man 7 Zeilen mit je 11 Zeichen..

M
9 Beiträge seit 2005
vor 3 Jahren

Hallo,

es gibt sicherlich noch eine schönere Variante, aber wenn ich dich richtig verstanden habe möchtest du ja nach 11 Einträgen die du in die Console einliest eine neue Zeile mit den nächsten 11.

Eine Variante wäre folgendes:


for (int i = 0; i < array.Length; i++)
            {
                Console.Write(array[i] + " ");
                if (i == 10 || i == 21 || i == 32 || i == 43 || i == 54 || i == 65 || i ==76 )
                {
                    Console.WriteLine();
                }
            }

So bekommst du alle 11 Zeichen eine neue Zeile.

Nur tote Fische schwimmen mit dem Strom

4.931 Beiträge seit 2008
vor 3 Jahren

Ist zwar eine (konkrete) Lösung, aber mithilfe einer bestimmten mathematischen Operation viel einfacher (und allgemeiner) lösbar. 😉

T
2.219 Beiträge seit 2008
vor 3 Jahren

Dafür wäre vermutlich modulo sinnvoller als genau zu zählen welche Zeilennummer du gerade hast 😃

Dotnet Perls

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.