Torna indietro   Hardware Upgrade Forum > Software > Programmazione

BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile
BOOX Palma 2 Pro è l'ultima evoluzione della gamma Palma. Ma di cosa si tratta? In breve è un dispositivo e-ink da 6,13 pollici che sfida le convenzioni con un display Kaleido 3 a colori, supporto per stilo InkSense Plus, connettività 5G solo dati e alimentato dal sistema operativo Android 15. Con queste caratteristica si configura come qualcosa in più di un semplice e-reader
FRITZ!Repeater 1700 estende la rete super-veloce Wi-Fi 7
FRITZ!Repeater 1700 estende la rete super-veloce Wi-Fi 7
FRITZ!Repeater 1700 porta il Wi-Fi 7 dual-band nelle case connesse. Mette a disposizione fino a 2.880 Mbit/s su 5 GHz e 688 Mbit/s su 2,4 GHz, integrazione Mesh immediata via WPS con FRITZ!Box e funzioni smart come MLO per bassa latenza. Compatto, plug-and-play e pronto per il futuro, è la soluzione ideale per chi vuole coprire ogni angolo senza cavi o complicazioni
Fondazione Chips-IT, l'Italia alla riscossa nei chip. Il piano e la partnership EssilorLuxottica
Fondazione Chips-IT, l'Italia alla riscossa nei chip. Il piano e la partnership EssilorLuxottica
La Fondazione Chips-IT ha presentato a Pavia il piano strategico 2026-2028 per rafforzare l'ecosistema italiano dei semiconduttori. Con un focus su ricerca, design, talenti e infrastrutture, la Fondazione punta a consolidare il ruolo dell'Italia nel Chips Act europeo, sostenendo innovazione, collaborazione industriale e sovranità tecnologica.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-01-2013, 23:14   #1
neski
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 come ho scritto nel titolo vorrei copiare più stringhe in un unico array di stringhe e poi dare l'output,faccio un esempio per spiegarmi meglio:


#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
neski è offline   Rispondi citando il messaggio o parte di esso
Old 10-01-2013, 08:07   #2
AllerITA
Member
 
L'Avatar di AllerITA
 
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);


}
così dovrebbe funzionare
__________________
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
AllerITA è offline   Rispondi citando il messaggio o parte di esso
Old 10-01-2013, 17:17   #3
Vincenzo1968
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.
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 10-01-2013, 18:36   #4
Vincenzo1968
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;
}
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 10-01-2013, 18:50   #5
Vincenzo1968
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;
}
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 10-01-2013, 19:45   #6
Vincenzo1968
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.
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 10-01-2013, 19:46   #7
neski
Junior Member
 
Iscritto dal: Jul 2012
Messaggi: 29
Grazie mille per le risposte! ma come al solito mi sono spiegato male.....
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
neski è offline   Rispondi citando il messaggio o parte di esso
Old 11-01-2013, 08:54   #8
AllerITA
Member
 
L'Avatar di AllerITA
 
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", ....}
puoi cpiarla nell'array di stringhe:

Codice:
        char array[100];
rispettivamente così

Codice:
       //caso 1,2,3
       strcpy(array,stringa);
       //caso 4
       strcpy(array,a.stringa);
in maniera analoga se vuoi appendere la stringa a un array che
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
AllerITA è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
FRITZ!Repeater 1700 estende la rete super-veloce Wi-Fi 7 FRITZ!Repeater 1700 estende la rete super-veloce...
Fondazione Chips-IT, l'Italia alla riscossa nei chip. Il piano e la partnership EssilorLuxottica Fondazione Chips-IT, l'Italia alla riscossa nei ...
Nutanix: innovazione, semplicità e IA al centro della strategia hybrid multicloud Nutanix: innovazione, semplicità e IA al ...
Lenovo LOQ 15i Gen 10 (15IRX10) alla prova: il notebook gaming 'budget' che non ti aspetti Lenovo LOQ 15i Gen 10 (15IRX10) alla prova: il n...
Hyundai e LifeGate presentano una soluzi...
IA: un italiano su quattro la vorrebbe a...
MSI MEG X870E Godlike X: solo 1.000 unit...
I Robotaxi di Tesla registrano un tasso ...
GOG Patrons è ufficiale: la commu...
smart #2: le foto spia rivelano il ritor...
Ford sceglie l'IA al posto degli EV: la ...
Urbanista Palermo a meno di 40 euro: ANC...
Gruppo Marino e WINDTRE BUSINESS: sicure...
Il nuovo CEO di Mozilla e la strategia p...
Google punta al salto di qualità ...
Windows 11 attiva in automatico il servi...
Arctic MX-7: la nuova generazione di pas...
Di Caprio, 'Una battaglia dopo l'altra' ...
Intel cambia pelle: nuovi manager e lega...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 02:12.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v