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

Segmentation fault w gcc na linuksie, który nie występuje w eclipse na windowsie.

0 głosów
397 wizyt
pytanie zadane 3 grudnia 2017 w C i C++ przez Zwolin Nowicjusz (150 p.)

Witam, jako że to mój pierwszy post chciałbym pozdrowić wszystkich użytkowników forum :) Postanowiłem ostatnio przesiąść się na linuksa. Jako kompilatora używam gcc-7. Rozwiązywałem zadanie ze SPOJ'a Flamaster. Napisałem taki oto kod:

#include<stdio.h>

int main(){
    int a,b,c,n;
    char wyraz[200], wyraz2[200];
    scanf("%d", &n);
    for(int i=0; i<n; i++){
        scanf("%s", wyraz);
        a=b=c=0;
        while(wyraz[a]!='\n'){
            b=0;
            wyraz2[c]=wyraz[a];
            a++; c++;
            while(wyraz[a-1]==wyraz[a]){
                b++; a++;
            }
            if(b==1) {wyraz2[c]=wyraz[a-1]; c++;}
            else if(b>=2) {wyraz2[c]=b+'0'; c++;}
        }
        wyraz2[c]='\n';
        printf("%s", wyraz2);        
    }
    return 0;
}

Wiem, że zapis

wyraz2[c]=b+'0';

będzie działał tylko dla b z zakresu 0-9, ale większe numery zaimplementuje później. Szukałem błędu przez około 2 godziny, aż wysłałem kod koledze, który odesłał mi screena i powiedział, że u niego program działa bez problemu. Używa on Eclipse i Mingw. Nie wiem, czy powinienem używać innego kompilatora na linuksie? Czy popełniam gdzieś błąd?

1 odpowiedź

+1 głos
odpowiedź 3 grudnia 2017 przez the_danger Gaduła (4,800 p.)
wybrane 3 grudnia 2017 przez Zwolin
 
Najlepsza

C-stringi powinny być zakończone zerem czyli '\0' a nie znakiem nowej linii

while(wyraz[a]!='\0')
wyraz2[c]='\0';

 

Podobne pytania

+1 głos
1 odpowiedź 414 wizyt
pytanie zadane 17 lutego 2022 w C i C++ przez Yaqbek Nowicjusz (160 p.)
0 głosów
0 odpowiedzi 314 wizyt
0 głosów
0 odpowiedzi 1,412 wizyt

93,757 zapytań

142,716 odpowiedzi

323,363 komentarzy

63,353 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...