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

    [w2K - Dev-C++] Cosa c'è di sbagliato in questa funzione?

    Ciao a tutti,
    cosa c'è di sbagliato in questa funzione? Il programma si pianta per un errore di puntatori vuoti... nella riga contrassegnata (X)... la prima volta che entro nel while:

    char* fTrova(char* s1, int inizio)
    {
    char* p = "";
    int i;
    if (!s1)
    return NULL;
    i = inizio;
    while (s1[i] != '#' && i <= strlen(s1))
    i++;
    // copia stringa...
    while (inizio <= i)
    p[inizio] = s1[inizio++]; // (X)
    p[inizio] = '\0';
    return p;
    }
    Montagne rocciose

  2. #2
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    il puntatore "punta" ad una variabile istanziata?

  3. #3
    Penso che 'p' sia instanziata, vero?
    Montagne rocciose

  4. #4
    Bugia
    prima del ciclo while (ultimo) manca l'allocazione della memoria necessaria, almeno spero:

    p = GlobalAlloc(GPTR, i);
    Montagne rocciose

  5. #5
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    io intendevo chiederti: puoi usare il tipo char* restituito dalla funzione se lo associ a p che è istanziata dentro la funzione?

    non mi era chiaro questo :
    codice:
    char* fTrova(char* s1, int inizio) 
    { 
    char* p = ""; 
    ...
    oppure char* lo dichiari prima? :master:

  6. #6
    No,

    code:--------------------------------------------------------------------------------
    char* fTrova(char* s1, int inizio)
    {
    char* p = "";
    ...
    --------------------------------------------------------------------------------

    char* p lo dichiaro all'interno della funzione. Se poi intendi solo char* penso che tu sappia che si tratta di un puntatore.
    Montagne rocciose

  7. #7
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    Originariamente inviato da Montagne rocciose
    No,

    code:--------------------------------------------------------------------------------
    char* fTrova(char* s1, int inizio)
    {
    char* p = "";
    ...
    --------------------------------------------------------------------------------

    char* p lo dichiaro all'interno della funzione. Se poi intendi solo char* penso che tu sappia che si tratta di un puntatore.
    si si, però non essendo programmatore C pensavo che dovesse "puntare" ad una variabile precedentemente istanziata e non capivo l'uso che ne facevi nella dichiarazione della funzione stessa

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.