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

usuwanie spacji z łancucha problem

VPS Starter Arubacloud
0 głosów
336 wizyt
pytanie zadane 14 stycznia 2018 w C i C++ przez mn130496 Gaduła (3,530 p.)

Witam 

Jestem Studentem pierwszego roku informatyki. związku z tym , że zbliża się koniec semestru i egzaminy postanowiłem w ramach nauki do nich raz jeszcze przerobićzadania, które robiliśmy na laboratoriach.

Mam takie zadanie: Napisac program, ktory usunie wszystkie spacje z podanego lancucha.

napisałem taki kod programu:

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

int main(void)
{
    int i,j;
    j = 0;
    char napis[1000]="ala ma kota";
    int a = strlen(napis);
    char *newnapis;
    newnapis = (char*) malloc(sizeof(char) * a);
    for(i = 0; i < a; i++)
    {
        if(napis[i] != 32)
        {
            newnapis[j] = napis[i];
            j++;
        }

    }
    for(i = 0; i < a; i++)
    {
        printf("%c", newnapis[i]);
    }
 free(newnapis);
    return (0);
}

Problem polega na tym że program się nie kompiluje i nie wiem czemu.Czy ktoś możemi pomóc.Z góry dziękuje

komentarz 14 stycznia 2018 przez adrian17 Ekspert (344,100 p.)

Problem polega na tym że program się nie kompiluje i nie wiem czemu

Nie ma żadnych komunikatów?

Mi się kompiluje. Jeśli nie wrzucisz jakiegoś screenshota to raczej nie będę  wstanie nic ciekawego powiedzieć.

komentarz 14 stycznia 2018 przez mn130496 Gaduła (3,530 p.)
wyskakuje mi komunikat w linijce 9 o treści :error: ISO C90 forbids mixed declarations and code [-Wpedantic]|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 1 second(s)) ===|
komentarz 14 stycznia 2018 przez j23 Mędrzec (194,920 p.)
Przenieś 8 linię za 12, albo kompiluj w nowszym standardzie (c99/c11).
komentarz 14 stycznia 2018 przez mn130496 Gaduła (3,530 p.)
ok teraz się kompiluje bez problemu  dziękuję za pomoc jeszcze jedno pytanko jak mi teraz włącza się program to oprucz napisu ala ma kota na vkoncu wyświetlane są jakieś inne litery np alamakotaES.Czy chodzi oro żebym wyzerował tablice napis czyli char napis[0]='\0' i będzie wszystko ok czy to jest coś innego?
komentarz 14 stycznia 2018 przez j23 Mędrzec (194,920 p.)

Nie wyzerował, tylko zakończył łańcuch wartością 0. Daj za linią 21 newnapis[j] = '\0';

komentarz 14 stycznia 2018 przez mn130496 Gaduła (3,530 p.)
acha No tak dziękuję bardzo za pomoc

pozdrawiam
komentarz 14 stycznia 2018 przez tangarr Mędrzec (154,780 p.)

Dodanie instrukcji newnapis[j] = '\0' w tym przypadku zakończy się przepełnieniem bufora.
Aby zapobiec temu problemowi wystarczy przydzielić 1 bajt więcej pamięci dla nowej tablicy. 

komentarz 14 stycznia 2018 przez j23 Mędrzec (194,920 p.)

@tangarr, zasadniczo masz rację, aczkolwiek w tym konkretnym przypadku to nie nastąpi.

1 odpowiedź

0 głosów
odpowiedź 14 stycznia 2018 przez tangarr Mędrzec (154,780 p.)
Program jest skonstruowany poprawnie.
W jaki sposób go kompilujesz i jakie błędy dostajesz?
komentarz 14 stycznia 2018 przez mn130496 Gaduła (3,530 p.)
kompiluje go wciskając F9 i wyskakuje komunikat o treści:error: ISO C90 forbids mixed declarations and code [-Wpedantic]|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 1 second(s)) ===|

Podobne pytania

0 głosów
2 odpowiedzi 305 wizyt
0 głosów
2 odpowiedzi 211 wizyt
pytanie zadane 13 maja 2022 w C i C++ przez Hektor1025 Nowicjusz (210 p.)
0 głosów
1 odpowiedź 284 wizyt
pytanie zadane 7 grudnia 2020 w C i C++ przez azazel32 Nowicjusz (120 p.)

92,454 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 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!

...