• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[C] Dlaczego program wypisuje losowy wiersz?

VPS Starter Arubacloud
0 głosów
110 wizyt
pytanie zadane 4 lipca 2017 w C i C++ przez kyly Początkujący (260 p.)

Witam! Uczę się dynamicznego zarządzania pamięcią w C, więc napisałem na razie prosty programik, wczytujący dowolna ilość znaków z konsoli. Wszystko działa niby poprawnie, ale po wypisaniu oczekiwanego wiersza, pojawia się jeszcze drugi z losowymi znakami. Dziękuję za pomoc.

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int main()
{
    int rozmiar = 4;
    int zwiekszenie = 2;
    int iloczyn = rozmiar;
    int i=0;
    printf("Podaj ciag znakow\n");
    char *t = malloc(sizeof(char)*rozmiar);
    for(i=0;i<=(iloczyn-1);i++)
    {
        t[i]=getc(stdin);
        if(i==iloczyn-1 && t[i] != '\n')
        {
            iloczyn = rozmiar*zwiekszenie;
            t = realloc(t,iloczyn*sizeof(char));
            zwiekszenie = zwiekszenie * 2;
        }
        else if(t[i]=='\n')
        {
            t = realloc(t,(i+1)*sizeof(char));
            break;
        }
    }
    printf("%s",t);
    free(t);
    return 0;
}

 

1 odpowiedź

0 głosów
odpowiedź 4 lipca 2017 przez tangarr Mędrzec (154,780 p.)
wybrane 4 lipca 2017 przez kyly
 
Najlepsza
Musisz wpisać 0 na koniec swojego łańcucha. Bez tego printf wypisuje zawartość pamięci aż do napotkania zera.
komentarz 4 lipca 2017 przez kyly Początkujący (260 p.)
Dziękuje, tak podejrzewałem, ze mój problem ma związek z zakończeniem łańcucha.

Podobne pytania

0 głosów
1 odpowiedź 319 wizyt
pytanie zadane 25 sierpnia 2020 w C i C++ przez fortuna Początkujący (310 p.)
0 głosów
0 odpowiedzi 397 wizyt
pytanie zadane 6 maja 2020 w C i C++ przez Hubertius Bywalec (2,970 p.)
0 głosów
2 odpowiedzi 762 wizyt
pytanie zadane 30 października 2018 w C i C++ przez Alan Kruszyński Obywatel (1,410 p.)

92,460 zapytań

141,265 odpowiedzi

319,104 komentarzy

61,856 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...