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

    [C++] Copiare char* in un array di char*

    Salve a tutti,

    ho un array di char*

    char* textureFile[4];


    ora, tramite una funzione che mi legge le righe di testo da un file, mi trovo 4 char* che sono le stringhe delle 4 righe del file.

    vorrei copiare la stringa di ogni char* dentro ogni cella dell'array textureFile.

    ho provato con:

    strcpy(textureFile[0],riga0); //dove riga 0 è un char* contenente la prima riga del mio file

    e via via cosi per gli altri char*:

    strcpy(textureFile[1],riga1); etc etc.

    Compila ma a RunTime mi da "eccezione non gestita".

    Come dovrei risolvere?

    Grazie a tutti

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Devi allocare spazio per ciascun puntatore del tuo array di puntatori, prima di potervi copiare una stringa (ovviamente tanto quanto ne occorre).
    every day above ground is a good one

  3. #3
    devi prima allocare la memoria: supponendo che tu debba copiare riga0 devi fare

    size_t len = strlen(riga0);
    textureFile[0] = new char [ len + 1 ] ;
    strcpy(textureFile[0], riga0);

    ciao
    sergio

  4. #4
    grazie a tutti per le vostre risposte. Funziona pero ho un problema.

    Dopo che ho copiato queste stringhe che sarebbero i path delle texture da caricare, tramite un altra funzione carico poi le texture scorrendo quell'array di char*.

    Ora la cosa strana è che, se faccio tipo:

    textureFile[0]="floor.tga";

    e poi chiamo la funziona che mi carica le texture, va tutto ok e le texture vengono applicate ad i miei poligoni (sto usando openGL).

    se invece faccio strcpy(textureFile[0],riga0); //Dove riga0 è un char* conentente la stringa letta da file (e sarebbe la stringa "floor.tga"), e poi richiamare la funzione che mi carica le texture le cose non funzionano, cioè non mi vengono applicate le texture.

    Quindi fare textureFile[0]="floor.tga"; e strcpy(textureFile[0],riga0); sono 2 cose diverse?

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Sì, sono diverse perche' nella prima lo spazio per la stringa (dato che e' costante) viene fornita dal compilatore (e sta praticamente nell'eseguibile), nella seconda sei tu che devi fornirlo allocandolo dinamicamente.

    Ma te lo avevano gia' detto (e mostrato con un esempio ...)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.