|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Jul 2012
Messaggi: 29
|
[C]Copiare più stringhe in un Array
Ciao a tutti sono ancora all'inizio con il c e ho un problema
#include <stdlib.h> #include <stdio.h> int main(){ int i; char string1[10]={"CANE"}; char string2[10]={"GATTO"} char array[30]; //*Ecco qua vorrei mettere l'inserimento delle stringhe in un unico array*/ ...... /* E infine leggere l'array*/ for(i=0; i<2; i++){ printf("%s",array[i]); } } Qualcuno sa come aiutarmi?scusate comunque grazie in anticipo |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Oct 2010
Città: Savona
Messaggi: 194
|
puoi usare prima strcpy poi strcat all'array che devi creare concatenando le due stringhe.
poi stampare l'intero array così ottenuto non come hai fatto tu. Codice:
#include <stdlib.h>
#include <stdio.h>
int main(){
int i;
char string1[10]="CANE";
char string2[10]="GATTO"
char array[30];
// copia di stringa
strcpy(array,string1);
// concatenazione di stringa
strcat(array, " ");
strcat(array,string2);
//e in fine stampa
printf("%s",array);
}
__________________
AMD Phenom II X6 3Ghz, MB Gigabyte 790xta-ud4 F4A, 4Gb Ram ddr3, HD Segate Barracuda 1T, SV ASUS GTX 560 Ti DirectCu II ,Monitor Philips 1920x1080 led 2 ms, Xbox360 Slim, Tablet Asus Transformer Pad TF300T, Gameboy Advance, Ipod Touch 16Gb Ultima modifica di AllerITA : 10-01-2013 alle 17:24. Motivo: Ultima Modifica per chiarezza |
|
|
|
|
|
#3 |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Puoi usare una array di puntatori a char come suggerito da Antonio:
Codice:
#include <stdlib.h>
#include <stdio.h>
#define RIGHE 21
int main()
{
int i;
char *array[RIGHE] = {"CANE", "GATTO"};
for(i = 0; i < RIGHE; i++)
{
if ( array[i] )
printf("\n%s\n\n", array[i]);
}
return 0;
}
Ultima modifica di Vincenzo1968 : 10-01-2013 alle 17:23. |
|
|
|
|
|
#4 |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Un piccolo miglioramento al codice. Puoi calcolare il numero di stringhe dell'array al volo(a runtime) con l'operatore sizeof in modo da evitare, all'interno del ciclo, di verificare se l'i-esimo elemento è NULL:
Codice:
#include <stdlib.h>
#include <stdio.h>
int main()
{
int i;
int count;
char *array[] = {"CANE", "GATTO", "PESCE", "TOPO DI FOGNA"};
count = sizeof(array)/sizeof(char*);
for(i = 0; i < count; i++)
{
printf("\n%s\n\n", array[i]);
}
return 0;
}
|
|
|
|
|
|
#5 |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Altrimenti, se non ti piace l'operatore sizeof, puoi utilizzare un puntatore a char per verificare la fine dell'array di stringhe(ma ti devi ricordare di inserire NULL al termine della lista di stringhe quando inizializzi l'array):
Codice:
#include <stdlib.h>
#include <stdio.h>
int main()
{
int i;
char *s = NULL;
char *array[] = {"CANE", "GATTO", "PESCE", "BISONTE", "GNU", NULL};
i = 0;
while( s = array[i++] )
{
printf("\n%s\n\n", s);
}
return 0;
}
|
|
|
|
|
|
#6 |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Infine, non consigliato per la leggibilità, ma per completezza la riporto ugualmente, c'è la versione con aritmetica dei puntatori:
Codice:
#include <stdlib.h>
#include <stdio.h>
int main()
{
char **s = NULL;
char *array[] = {"CANE", "GATTO", "PESCE", "BISONTE", "GNU", NULL};
s = array;
while( (*s) )
{
printf("\n%s\n", (*s++));
}
printf("\nLa prima stringa dell'array: \"%s\"\n", array[0]);
printf("\nPremi INVIO(RETURN) per terminare.\n");
getc(stdin);
return 0;
}
Ultima modifica di Vincenzo1968 : 10-01-2013 alle 19:48. |
|
|
|
|
|
#7 |
|
Junior Member
Iscritto dal: Jul 2012
Messaggi: 29
|
Grazie mille per le risposte!
io sto cercando di fare una cosa del genere: #include <stdio.h> #include <stdlib.h> #include <string.h> #define lin 10 typedef struct { char dom[lin]; char risp_1[lin]; char risp_2[lin]; }dati; void copia(){ dati dom[100]={ {" Gatto"}, {"Cane"} }; void copia(){ int i; char array[100](o con un puntatore); ///* e qua vorrei mettere ogni stringa dentro a questo alla variabile array,e riuscirle a leggerle in questo modo:*/// for(i=0; i<2; i++){ printf("%s\n",array[i]); } } int main(){ copia(); return 0; } Mi manca quella parte centrale per inserire le stringhe nell array
|
|
|
|
|
|
#8 |
|
Member
Iscritto dal: Oct 2010
Città: Savona
Messaggi: 194
|
come ti ho indicato per copiare una stringa in un array di stringhe devi usare:
strcpy quindi se hai un array di char così: Codice:
//caso 1
char stringa[10]="CANE";
//oppure
//caso 2
char stringa[]="CANE"
//oppure
//caso 3
const char *stringa="CANE"
//oppure
//caso 4
typedef struct MYTYPE {
stringa[10];
.....
} MYTYPE;
//inizializzata così:
MYTYPE a= { .stringa="CANE", ....}
Codice:
char array[100]; Codice:
//caso 1,2,3
strcpy(array,stringa);
//caso 4
strcpy(array,a.stringa);
contiene già delle stringhe usa strcat con sole queste due funzioni puoi copiare e appendere tutte le stringhe che vuoi, attenzione a un accorgimento la stringa deve comprendere anche il terminatore di stringa '\0'.
__________________
AMD Phenom II X6 3Ghz, MB Gigabyte 790xta-ud4 F4A, 4Gb Ram ddr3, HD Segate Barracuda 1T, SV ASUS GTX 560 Ti DirectCu II ,Monitor Philips 1920x1080 led 2 ms, Xbox360 Slim, Tablet Asus Transformer Pad TF300T, Gameboy Advance, Ipod Touch 16Gb |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:12.



















