• 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

Object Storage Arubacloud
0 głosów
408 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,750 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 (194,920 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 (194,920 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,750 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 (194,920 p.)

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

komentarz 4 stycznia 2018 przez Mirosław Zelent Nałogowiec (34,750 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,750 p.)

Podobne pytania

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

92,552 zapytań

141,399 odpowiedzi

319,533 komentarzy

61,938 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...