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

Program odwracający porządek łańcucha -źle działa Je

Aruba Cloud - Virtual Private Server VPS
0 głosów
634 wizyt
pytanie zadane 4 stycznia 2018 w C i C++ przez mn130496 Gaduła (3,530 p.)

Witam

Ostatnio na laboratoriach z programowania dostałem następujące zadanie:

Napisac program obracajacy porzadek znakow lancucha, np: "abcd" zamieniamy na "dcba"

Napisałem program , który odwraca mi porządek łańcucha.Problem polega na tym, że jak  na przykład  chce odwrócić porządek  łańcucha  abcd  to wpisuje abcd i wyświetla mi się dcba ale dodatkowo wyświetlają mi się jakieś dziwne  znaki i nie wiem dla czego?.Dodatkowo w linijce 11 mam warninga  o treści implicit declaration of function 'strlen' [-Wimplicit-function-declaration]|  również w tej same linijce mam 

jeszcze jednego warninga o treści  incompatible implicit declaration of built-in function 'strlen'|.

Czy ktoś może mi pomóc w rozwiązaniu tego problemu?

Dodam jeszcze , że program ma być w języku C.Z góry dziękuję

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    char napis[100],odwrocony[100];
    int i;
    int dlugosc;
    printf("Podaj tekst , ktory ma zostac odwrocony: \n");
    gets(napis);

    dlugosc=strlen(napis);
    for(i=0; i<dlugosc;i++)
    {
        odwrocony[i]=napis[dlugosc-i-1];
    }
    printf("odwrucony tekst to:%s  \n",odwrocony);
    system("pause");
    return (0);
}

 

1 odpowiedź

+2 głosów
odpowiedź 4 stycznia 2018 przez Mirosław Zelent Nałogowiec (34,780 p.)
wybrane 4 stycznia 2018 przez mn130496
 
Najlepsza

Pamiętaj, że napis kończy się znakeim NULL (a jego nie przepisałeś z tablicy napis do tablicy odwrocony). 

Można by zrobić tak:

for(i=0; i<=dlugosc; i++)

albo pod pętlą dodać NULL w dobrym miejscu tablicy:

odwrocony[dlugosc]=NULL;

Kiedy printf napotka NULL, to raczej nie wypisze już niczego bzdurnego.

 

3
komentarz 4 stycznia 2018 przez j23 Mędrzec (195,240 p.)

Zamiast NULL lepiej dać 0 lub '\0'. NULLa lepiej stosować do wskaźników, coby kod był czytelniejszy.

komentarz 4 stycznia 2018 przez mn130496 Gaduła (3,530 p.)
ok teraz wszystko działa dziękuję za pomoc a dlaczego mam jeszcze te waringi? w linijce 11?
komentarz 4 stycznia 2018 przez j23 Mędrzec (195,240 p.)

Załącz <string.h>.

1
komentarz 4 stycznia 2018 przez criss Mędrzec (172,590 p.)

Zamiast NULL lepiej dać 0 lub '\0'. 

Też tak mysle.  Ciąg znaków zawsze musi się kończyć znakiem o wartości 0, a NULL niekoniecznie musi być zerem (standard tego nie definiuje, chociaż jeszcze nie widziałem platformy na której byłoby inaczej).

komentarz 4 stycznia 2018 przez mn130496 Gaduła (3,530 p.)
ok działa dziękuję
1
komentarz 4 stycznia 2018 przez Mirosław Zelent Nałogowiec (34,780 p.)
Przyrównanie NULL do zera znajdziemy w stdio.h -> http://www.cplusplus.com/reference/cstdio/NULL/  ale jeśli ktoś nie chce używać NULL, to imo '\0' będzie najlepsze do terminacji łańcucha, 0 to jednak kod ASCII 0x30, nie 0x00. W praktyce i tak wiadomo, że printf we wszystkich trzech przypadkach zakończy wypisywanie tablicy na znaku o indeksie dlugosc.
komentarz 4 stycznia 2018 przez j23 Mędrzec (195,240 p.)

Zero to zero, a nie znak ASCII ('0') ;)

komentarz 4 stycznia 2018 przez Mirosław Zelent Nałogowiec (34,780 p.)
Racja, nie ma tu przecież apostrofów, przepraszam
komentarz 4 stycznia 2018 przez monika90 Pasjonat (22,940 p.)
odwrocony[dlugosc]=NULL;

To jest błąd typu. Kompilator języka C nie ma obowiązku czegoś takiego skompilować.

komentarz 4 stycznia 2018 przez Mirosław Zelent Nałogowiec (34,780 p.)

Podobne pytania

0 głosów
0 odpowiedzi 209 wizyt
pytanie zadane 14 lutego 2018 w Matematyka, fizyka, logika przez heron Nowicjusz (120 p.)
0 głosów
1 odpowiedź 579 wizyt
0 głosów
2 odpowiedzi 1,734 wizyt
pytanie zadane 2 marca 2016 w C i C++ przez sebask08 Użytkownik (510 p.)

93,324 zapytań

142,323 odpowiedzi

322,390 komentarzy

62,653 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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...