Visualizzazione dei risultati da 1 a 8 su 8

Discussione: C problemi con strlen

  1. #1

    C problemi con strlen

    ho un nodo contenente una stringa di char:
    struct tipo_uno{
    char *nome;
    struct tipo_uno *up;};

    all'interno di una funzione se stampo il contenuto della stringa puntata mi restituisce la stringa corretta, ma se faccio un
    p=strlen(t->nome) mi genera un errore di protezione della memoria.
    perche???????????

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Dato che non hai postato completamente il codice, deduco che l'errore stia nel fatto che tu hai una variabile di tipo struttura e non di tipo puntatore a struttura. In questo caso, i membri della struttura si accedono mediante l'operatore punto ( . ) e non tramite l'operatore freccia.
    Quindi in questo modo:
    codice:
    p = strlen(t.nome);
    Non avendo altre informazioni in merito alla variabile t non mi viene in mente altro che possa provocare un errore di protezione.


    Ciao.
    "Perchč spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    tipo_uno *t;
    se faccio printf("%s",t->nome) mi stampa la stringa corretta,
    ma
    int h;
    h=strlen(t->nome) mi da errore

  4. #4
    tipo_uno *t;
    se faccio printf("%s",t->nome) mi stampa la stringa corretta,
    ma
    int h;
    h=strlen(t->nome) mi da errore

  5. #5
    nel frattempo ho provato anche con strlen(t.nome) ma mi da cmq l'errore

  6. #6
    (*t).nome
    e' la notazione corretta
    e non t.nome

  7. #7
    non funziona manco cosi!!!!!!! help

  8. #8
    ho provato cosi :

    codice:
    #include <iostream>
    
    using namespace std;
    
    int main()
    
    {
        struct tipo_uno{
        char *nome;
        struct tipo_uno *up;}; 
        
        
        tipo_uno s;
        tipo_uno *t=&s;
        
        s.nome="Ciao";
        printf("%s",t->nome);
        int h;
        h=strlen(t->nome);
    
        cout<<h;
        system("PAUSE");   
        return 0;
    }
    e in uscita mi visualizza Ciao e 4 senza dare errori nč in compilazione nč in esecuzione
    E' tutta colpa di Berlusconi !
    Help [Ciclico] Fisco, domande varie

    Avatar

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 © 2025 vBulletin Solutions, Inc. All rights reserved.