Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
Fino a 740 km WLTP con la batteria da 97,2 kWh, sospensioni che leggono la strada con una telecamera e un abitacolo da salotto parigino. La nuova DS N°7 raccoglie l'eredità della DS 7 e la porta, per la prima volta, nel mondo 100% elettrico. Ecco come è fatta, cosa offre e quanto costa.
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più
Abbiamo provato Samsung Galaxy Tab S12 Ultra nella versione 12 GB + 256 GB con tastiera, e il risultato è un tablet che in questa configurazione si comporta come un notebook con la fluidità tipica di Android. Spessore di 5,1 mm, display Dynamic AMOLED 2X da 14,6 pollici, MediaTek Dimensity 9500 e un software senza incertezze compongono un prodotto di vertice, con prezzi da 1.539 euro, frenato solo da un'autonomia nella parte bassa del confronto
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura)
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura)
Abbiamo provato per dieci giorni la Hyundai IONIQ 5 N, con 650 CV, 770 Nm e uno 0-100 km/h in 3,4 secondi. Il suo punto forte è N e-Shift, che simula un cambio a otto rapporti con suoni da motore termico e perfino un bang supersonico
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


DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort DS N°7 E-Tense: il SUV premium made in Melfi...
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più Recensione Samsung Galaxy Tab S12 Ultra: non chi...
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura) Hyundai IONIQ 5 N, l'elettrica che finge di esse...
CES Unveiled Milan, l'IA diventa tecnologia fondativa e il commercio torna centrale CES Unveiled Milan, l'IA diventa tecnologia fond...
 Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP Recensione OPPO Find X10 Pro Max: un top di gam...
La Difesa statunitense ha pubblicato la ...
vivo X500 Pro e Pro Max ufficiali: tanta...
iOS 27.2: l'iPhone chiede ai numeri scon...
Final Cut Pro integra MotionVFX e Apple ...
iMac M6 da 1.829 euro, MacBook Pro 14 M6...
RayNeo GT a 313,65€ su Amazon: occhiali ...
NVIDIA e Meta: 3 miliardi di dollari e p...
PHP2Shell: sfruttate attivamente le due ...
Raffreddamento passivo senza elettricità...
La deforestazione in Amazzonia crolla a ...
La luce del sole a mezzanotte, ecco come...
Oltre mille modelli 3D scaricati senza a...
274 brani di Elvis Presley sono stati us...
SVOLT avvia la produzione in serie di ba...
Apple rilascia macOS Sequoia 15.8.2 e Ta...
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: 19:12.


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