Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

C# - puste pole w tablicy char, jak zobaczyć?

.michal 07 Mar 2013 21:44 2910 6
  • #1 07 Mar 2013 21:44
    .michal
    Poziom 13  

    Witam,
    próbuję napisać program kodujący tekst sposobem z przestawieniem macierzowym, wygląda to mniej więcej tak

    Kod: python
    Zaloguj się, aby zobaczyć kod


    wyglada to w miarę prosto ale mam problem z odczytywaniem ostatniego wiersza ze względy na możliwość wystąpienia takiego "ząbka" jak w tym przypadku
    czyli wczytuje A potem O potem puste z 4 i 2 nie czyta bo brakuje miejsca w końcowej tablicy. Nie wiem jak tego uniknąć. Może ktoś coś podpowie, wstawiam swój kod z tego co napisałem ;)
    Kod: csharp
    Zaloguj się, aby zobaczyć kod


    tak wiem że można było od początku prościej na jednowymiarowej tablicy ale dopiero teraz na to wpadłem i chce skończyć tak jak to zacząłem;)
    Mam nadzieję że ktoś mi pomoże ;)
    Michał

    0 6
  • #2 07 Mar 2013 22:23
    marcinj12
    Poziom 40  

    Pusty element char ma wartość '\0'
    Przed dodaniem elementu do tablicy końcowej sprawdź za pomocą if czy przypadkiem dodawany element nie ma takiej wartości - i już.

    0
  • #3 08 Mar 2013 00:01
    .michal
    Poziom 13  

    próbowałem tak i w visualstudio12 nie chciało mi się skomplikować, pokazywał się komunikat że taki warunek zawsze będzie fałszywy nie wiem czemu. A ktoś mi powiedział że pole w tablicy char nigdy nie bedzie puste bo char to char i tam nie ma pustki ale nie wiem czy to prawda, chyba raczej nie, tak mi się wydaje;)

    0
  • #4 08 Mar 2013 00:21
    marcinj12
    Poziom 40  

    A jak dokładnie ten warunek wpisałeś?
    "Pusty" to pojęcie względne - wartości null tam nie będzie, ale będzie jakaś wartość domyślna. Tutaj masz tablicę tych domyślnych wartości typów w C#.

    0
  • #5 08 Mar 2013 00:22
    yogi009
    Poziom 42  

    Zmienna typu char w C ma zawsze reprezentację liczbową, przynajmniej tak podaje niejaki Brian Kernighan. Może zacytuj tą niedziałającą "logikę" z Twojego kodu.

    0
  • #6 08 Mar 2013 14:49
    .michal
    Poziom 13  

    Nie wiem co mi wczoraj było:P teraz spróbowałem jeszcze raz i działa z tym '\0'. Sorki nie było pytania ;P

    0
  • #7 08 Mar 2013 14:53
    wiesniak
    Poziom 31  

    Moim zdaniem źle podchodzicie do problemu. Zamiast bawić się z wartościami domyślnymi, zrobiłbym tak, że przede wszystkim przetwarzam każdy wiersz osobno metodą (zamiast kodu spaghetti) i w tej metodzie usuwałbym z pozycji klucza te elementy, które wychodzą poza długość przetwarzanego fragmentu. Coś takiego:

    Kod: csharp
    Zaloguj się, aby zobaczyć kod

    0