Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Newbie C++ e SegmentationFault con char*

    Salve a tutti,
    mi stò cimentando in questi giorni con il C++
    NOn basta solo il Java
    Però eseguendo un esempio scritto sul libro ricevo un segmentation fault.

    L'esempio è il seguente
    codice:
    #include <iostream>
    
    using namespace std;
    
    void cpy(char*,const char*);
    
    int main(){
    const char* s="ABCDEFG";
    char* ss="ZZZZZZZZZZ";
    
    cout<<" s = [" << s << "], ss = [" << ss << "]\n";
    cpy(ss,s);
    cout<<" s = [" << s << "], ss = [" << ss << "]\n";
    
    }
    
    void cpy(char* s1, const char* s2){
        do *s1++=*s2++;
        while(*s2);
    }
    L'outpur invece il seguente
    codice:
    ./prova2
     s = [ABCDEFG], ss = [ZZZZZZZZZZ]
    Segmentation fault
    Se tolgo l'assegnazione *s1++=*s2++; tutto funziona...
    Why?
    Lang=Java
    Ambiente = Eclipse forever
    Ubuntu & Win XP Pro

  2. #2
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772
    Il problema è char *ss="ZZZZZZZZZZ"; che è una costante...

    Se usi una cosa del tipo ss[50]; nn si dovrebbe impallare.

    Inoltre nn capisco perche in C++ facciano gli esempi con le stringhe C Style .
    Live fast. Troll hard.
    Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
    Team Lead @Gameloft Barcelona

  3. #3
    Allora 5/6 esempi sono sbagliati
    E' per imparare a gestire i puntatori
    Lang=Java
    Ambiente = Eclipse forever
    Ubuntu & Win XP Pro

  4. #4
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    per curiosità..che libro è?

    come ti e stato detto se dichiari char *s = "cccc";

    s è un puntatore a un letterale stringa che è costante per definizione ed è illegale la modifica dei caratteri del letterale, alcuni compilatori, gcc, mingw, reagiscono con il segomentation fault se cerchi di modificare.

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  5. #5
    Programmare in C++
    Mc-Graw Hill
    John R.Hubbard
    Lang=Java
    Ambiente = Eclipse forever
    Ubuntu & Win XP Pro

  6. #6
    Che libro consigliate?
    Lang=Java
    Ambiente = Eclipse forever
    Ubuntu & Win XP Pro

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.