Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    61

    array di puntatori a char

    Ragazzi ho sviluppato un programma che utilizza un array di puntatori a char in C.
    Il mio problema è questo, ho la necessità di leggere queste stringhe da tastiera lo posso fare?
    ho provato in questo modo:
    char *a[];
    scanf ("%s",&a[i]);
    e anche con il gets ma non scrive nulla nel vettore.
    Invece dando come costante le stringhe funziona
    es: char *a[]={"esposito","di michele","pippo"};

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301

    Moderazione

    Il linguaggio anche nel titolo in the future, come da Regolamento.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254

    Re: array di puntatori a char

    Originariamente inviato da cinar
    Ragazzi ho sviluppato un programma che utilizza un array di puntatori a char in C.
    Il mio problema è questo, ho la necessità di leggere queste stringhe da tastiera lo posso fare?
    ho provato in questo modo:
    char *a[];
    scanf ("%s",&a[i]);
    e anche con il gets ma non scrive nulla nel vettore.
    Invece dando come costante le stringhe funziona
    es: char *a[]={"esposito","di michele","pippo"};
    Due cose molto importanti:

    1) Devi dimensionare l'array di puntatori. Va bene dimensionarlo sia in modo "statico" (prefissato), sia in modo "dinamico", allocando memoria a run-time.
    Ad esempio:

    char *a[20];

    Hai 20 puntatori char*

    2) I soli puntatori non bastano, devi allocare spazio per ogni stringa. Questo in genere, se hai un array di char*, lo fai allocando dinamicamente la memoria, tipicamente all'interno di un ciclo.

    ...
    a[i] = (char*) malloc (100);
    scanf ("%s",a[i]);
    ...

    Nota che non devi mettere la '&', altrimenti prendi l'indirizzo del puntatore e non il puntatore.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    61
    ho provato ad utilizzare malloc ma praticamente quendo lancio in esecuzione il progetto mi fa caricare i valori e alla fine del caricamento windows dice che progetto.exe ha generato un errore e me lo chiude, cosa che non mi fa con la dichiarazione di stringhe costanti.
    Praticamente l'algoritmo che vado a richiamare su questi 2 vettori di puntatori a char è quello di fusione, partendo dal presupposto che i due vettori sorgenti sono ordinati e utilizzo la funz. strcmp per generare il terzo array nxm.

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    Ok ... ma il problema non e' la malloc o il suggerimento (chiaro e corretto) di andbin, ma del resto del codice che hai scritto, ma che non hai mostrato ...

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.