|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2005
Città: NAPOLI
Messaggi: 648
|
GROSSO dubbio puntatore a char?!?!
sto avendo grossi problemi con i puntatori a char....praticametne devo assegnare da tastiera gli elementi di un vettore di stringhe definito come puntatore a char quindi:
inizializzo char *insieme1[50]; ora con un ciclo for vojo assegnare ad uno ad uno gli elementi...ma come? ho provato in tutti i modi... l'ultimo ke ho provato era questo: char *pinsieme1[100]; n=4; for(i=0;i<n;i++) { printf("elemento: %d: ",pinsieme1);//vojo leggere l'indirizzo scanf("%s",&pinsieme1[i]); pinsieme1++; } ma ovviamente di da un problema nell'ultima riga del for. sto perdendo la testa nn riesco proprio a trovare il modo di fare girare sto stupido programma. grazie ragazzi...ho un esame in settimana vi prego aiutatemi
__________________
O'Napule dint'o'core.......... -MacBook 2,26 GHz Intel Core 2 Duo - 4 GB DDR3 -IPhone 3GS 16 GB -Ipad wifi+3g 64gb |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: May 2002
Città: somewhere in Europe
Messaggi: 2554
|
Quote:
fai un puntatore a char...non puoi fare una scanf %s....dovrai fare una getch() così scrivi in memoria una stringa e la sporchi... ora sono un po' arrugginito con il C, comunque quel vettore di puntatori a caratteri punta a 4 diverse locazioni in memoria, in ognuna puoi scrivere un carattere diverso, ma non puoi scriverci una stringa! Se nella stringa scrivi solo un carattere è ok...ma se una volta eseguito scrivi più caratteri sei fregato. e pinsieme++ è sbagliato l'indirizzo non i serve leggerlo..guarda le variabili dal debugger. for(i=0;i<n;i++) { scanf("%s",&pinsieme1[i]); } se mi ricordo bene così dovrebbe andare. |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
La questione principale è che dichiarando una variabile:
char *insieme1[50]; si crea un array di 50 puntatori a char e basta. Non viene allocato alcun spazio per le stringhe vere e proprie. Prima di prendere in input una stringa bisogna quindi allocare dello spazio per ogni singola stringa (ad esempio con la funzione malloc) e poi a quel punto usare scanf.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jan 2005
Città: NAPOLI
Messaggi: 648
|
quindi praticametne come dovrebbero essere le linee di codice?
__________________
O'Napule dint'o'core.......... -MacBook 2,26 GHz Intel Core 2 Duo - 4 GB DDR3 -IPhone 3GS 16 GB -Ipad wifi+3g 64gb |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jan 2005
Città: NAPOLI
Messaggi: 648
|
finalmente così mi gira...
l'unica cosa ke vojo capire....il numero 20 ke ho messo nel malloc cosa mi fa realmente??? { int n,m,i,j; char *pinsieme1[40]; n=4; for(i=0;i<n;i++) { pinsieme1[i]=malloc(20*sizeof(char)); } for(i=0;i<n;i++) { scanf("%s",pinsieme1[i]); } for(i=0;i<n;i++) printf("%s\n",pinsieme1[i]);
__________________
O'Napule dint'o'core.......... -MacBook 2,26 GHz Intel Core 2 Duo - 4 GB DDR3 -IPhone 3GS 16 GB -Ipad wifi+3g 64gb |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jan 2005
Città: NAPOLI
Messaggi: 648
|
il tutto a me serve pèer realizzare questo esercizio:
Algoritmo per il calcolo dell’unione di due insiemi di stringhe. Un insieme di stringhe deve essere rappresentato con un array di puntatori a char. Nei tre test usare 2 insiemi di almeno 15 e 20 stringhe, 25 e 30 stringhe, 35 e 40 stringhe....
__________________
O'Napule dint'o'core.......... -MacBook 2,26 GHz Intel Core 2 Duo - 4 GB DDR3 -IPhone 3GS 16 GB -Ipad wifi+3g 64gb |
|
|
|
|
|
#7 | |||
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Quote:
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|||
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:16.



















