Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Array-Elemente in Zeichenfolge gliedern
Mele90
myCSharp.de - Member



Dabei seit:
Beiträge: 3

Themenstarter:

Array-Elemente in Zeichenfolge gliedern

beantworten | zitieren | melden

Guten Abend zusammen,

ich soll folgende Aufgabe lösen und benötige etwas Unterstützung

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 };

Schreiben Sie eine Methode, mit der dieses Array in eine in Ihrem Projektmappenordner anzulegende Datei „ESA2.txt“ gespeichert werden kann.

Schreiben Sie eine weitere Methode, mit der dieses Array aus der Datei ausgelesen und auf Konsole ausgegeben werden kann.
Die Konsolenausgabe soll in sieben Zeilen mit jeweils elf Zeichen gegliedert werden – dies entspricht auch der vorstehenden Anordnung der Array-Elemente.
Achtung: eine Zeile im Array besteht aus 33 Zeichen – Konsolenausgabe soll hingegen elf Zeichen umfassen!

Hier ist mein Code, den ich geschrieben habe:


using System;
using System.IO;

namespace ESA_2
{
    class Program
    {
        public void ESA2In(string pfad, byte[] array)
        {
            FileStream stream = File.Open(pfad, FileMode.Create);
            for (int i=0; i<array.Length; i++)
            {
                stream.WriteByte(array[i]);
            }
                        stream.Close();
        }
        // Aufruf in Main
        static void Main(string[]args)
        {
            Program test = new Program();
            string pfad = @"C:\Users\Melanie Schlosser\ESA2.txt";
            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 };
             test.ESA2In(pfad, array);
        }
        public void ESA2Out(string pfad)
        {
            StreamReader reader = new StreamReader(File.Open(pfad, FileMode.Open));
            int i;
            while ((i = reader.Read()) != -1)
                Console.WriteLine("{0}", i);
                Console.WriteLine();
                reader.Close();
        }
    }
} 



Vielen Dank für eure Hilfe
LG
Melanie

Moderationshinweis von Abt (25.07.2021 - 13:30:55):

Bitte Code in Zukunft selbst formatieren [Hinweis] Wie poste ich richtig?

private Nachricht | Beiträge des Benutzers
Papst
myCSharp.de - Experte



Dabei seit:
Beiträge: 386
Herkunft: Kassel

beantworten | zitieren | melden

Hi,

woran scheiterst du?

Deine Datei wird vermutlich 32 mal den Inhalt des Arrays enthalten.
Logisch, was du machen musst, in dem Stil, in dem du bereits angefangen hast.

Beim Schreiben zählst du mit, wenn du 33 Zeichen geschrieben hast, schreibst du als nächstes ein NewLine (anstatt mitzählen kannst du auch rechnen i %33 == 0).

Beim lesen verwirfst du einfach die NewLine und setzt dir einen String zusammen den du jedesmal, wenn i %11 == 0 per Console.WriteLine schreibst, alternativ kannst du hier genauso arbeiten wie beim schreiben und nach 11 Zeichen ein NewLine einfügen.

Tipps:
  • stream.WriteByte(array) schreibt nur das aktuelle Zeichen, nicht alle
  • Console.WriteLine schreibt die Zeichen + ein NewLine, Console.Write würde nur die Zeichen schreibenm, die du möchtest
  • Environment.NewLine enthält einen Zeilenumbruch als 2 Zeichen (Windows)
  • % ist der Modulo Operator
  • [/list]
private Nachricht | Beiträge des Benutzers
Mele90
myCSharp.de - Member



Dabei seit:
Beiträge: 3

Themenstarter:

beantworten | zitieren | melden

Guten Abend,

danke für den Hinweis.
würdest du eventuell den Code mal schreiben, da ich momentan auf dem Schlauch stehe.

Dank



Zu deiner Frage, was ich als Ausgabe bekomme:
CC # # C C # # C #####

Ich müsste aber alle Zeichen ausgegeben bekommen.

Danke.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16110

beantworten | zitieren | melden

Das Forum ist kein kostenloser Quellcode-Generator oder Hausaufgaben-Löser. Der Sinn eines Forum ist, dass Dir so geholfen wird, dass Du das Problem verstehst und etwas lernst.
Siehe [Hinweis] Wie poste ich richtig?

Wenn Du irgendwo auf dem Schlauch stehst, dann sag was Du probiert hast und wo Du nicht weiter kommst.
Aber "Hey, schreib mir mal den Code" is nich ;-)
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
inflames2k
myCSharp.de - Experte

Avatar #AARsmmPEUMee0tQa2JoB.png


Dabei seit:
Beiträge: 2358

beantworten | zitieren | melden

Sind die 11 Zeichen pro Zeile eigentlich ernst gemeint? Dann wird doch die hälfte verschluckt. Ich meine klar, wenn nur die Kommas ausgegeben werden passt es. - Aber die Zahlen sind ja schon 22 Zeichen auf 7 Zeilen.

Sind hier nicht eher 22 Zeichen pro Zeile gemeint und nur die Kommas sollen weggelassen werden?
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von inflames2k am .
Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager | Spielkartenbibliothek
private Nachricht | Beiträge des Benutzers
Mele90
myCSharp.de - Member



Dabei seit:
Beiträge: 3

Themenstarter:

beantworten | zitieren | melden

Hallo inflames2k,

es sind 11 Zeichen gemeint pro Zeile.
Die hälfte soll weggelassen werden.

LG Melanie
private Nachricht | Beiträge des Benutzers