Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Roborock Saros 20: il robot preciso e molto sottile
Roborock Saros 20: il robot preciso e molto sottile
Il nuovo robot di Roborock per l'aspirazione della polvere e il lavaggio dei pavimenti spicca per immediatezza d'uso e per l'efficacia dell'azione, grazie anche a un ridotto sviluppo in altezza. Saros 20 integra un motore da ben 36.000Pa di potenza e un sistema di lavaggio a due panni rotanti, con bracci estensibili e un sistema di navigazione molto preciso.
ASUS ROG Kithara: quando HIFIMAN incontra il gaming con driver planari da 100mm
ASUS ROG Kithara: quando HIFIMAN incontra il gaming con driver planari da 100mm
ASUS e HIFIMAN uniscono le forze per creare ROG Kithara, cuffie gaming con driver magnetici planari da 100mm, design open-back e microfono MEMS full-band. Una proposta che ambisce a coniugare fedeltà per audiofili e performance ludiche, disponibili a 319 euro
Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Qrevo Curv 2 Flow è l'ultima novità di casa Roborock per la pulizia di casa: un robot completo, forte di un sistema di lavaggio dei pavimenti basato su rullo che si estende a seguire il profilo delle pareti abbinato ad un potente motore di aspirazione con doppia spazzola laterale
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


Roborock Saros 20: il robot preciso e molto sottile Roborock Saros 20: il robot preciso e molto sott...
ASUS ROG Kithara: quando HIFIMAN incontra il gaming con driver planari da 100mm ASUS ROG Kithara: quando HIFIMAN incontra il gam...
Roborock Qrevo Curv 2 Flow: ora lava con un rullo Roborock Qrevo Curv 2 Flow: ora lava con un rull...
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite Alpine A290 alla prova: un'auto bella che ti fa ...
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile Recensione HONOR Magic 8 Lite: lo smartphone ind...
AMD ha interrotto il supporto al Ryzen Z...
Sempre più attacchi condotti con ...
Windows 11 domina, ma sempre più ...
Iran: sui droni LUCAS è stato imp...
Gli attacchi informatici guidati dall'IA...
Donut Lab svela il secondo test sulle su...
La particolare nebulosa Cranio è ...
Intel Xeon 6+ Clearwater Forest: 288 E-c...
Motorola al MWC 2026: fra razr fold ed e...
SpaceX rinomina la tecnologia Direct to ...
Apple annuncia iPad Air M4: la sorpresa ...
Vivo sorprende al MWC 2026 con l'arrivo ...
Operai BMW tremate: arrivano i primi rob...
ZTL Roma, arriva la conferma: anche le e...
iPhone 17e è ufficiale: arrivano ...
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:46.


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