View Full Version : [C]Acquisire parole con vettori
Ciao. Ho un esercizio da fare che chiede di far scrivere all'utente due parole e poi stamparle con uno spazio in mezzo.
Il libro scrive che bisogna fare due vettori contenenti le due parole e poi sommarli. Ma come si sommano due vettori ? e lo spazio in mezzo.
Thx a lot
Sommarli è un'espressione non esatta...magari sarebbe meglio dire unirli...
carter100
23-09-2007, 16:02
Prendi la dimensione dei due vettori e ne allochi uno nuovo con la dimensione somma dei 2 + 1 (che conterrà lo spazio); dopo se usi la funzione strcat () concateni i due vettori uno alla volta
Sommarli è un'espressione non esatta...magari sarebbe meglio dire unirli...
Scusa l'espressione , ma sonoa ncora un novellino.
Prendi la dimensione dei due vettori e ne allochi uno nuovo con la dimensione somma dei 2 + 1 (che conterrà lo spazio); dopo se usi la funzione strcat () concateni i due vettori uno alla volta
Riesci a farmi un esempio?
Thx
carter100
23-09-2007, 16:29
Ti faccio un esempio veloce:
per ipotesi le due parole sono nelle stringhe a e b;
fai int num1=strlen (a) per avere la dimensione della stringa a;
int num2=strlen(b) per la dimensione di b;
a questo punto allochi una stringa char c[num1+num2+1];
ora hai una stringa c che conterrà alla fine a+b;
se fai strcpy (c,a) hai copiato in c il contenuto di a;
ora se fai strcat (c," "); e strcat (c,b) dovresti avere in c il contenuto di a e b
intervallato con lo spazio
Suppongo che l'esercizio chiedesse di operare con i vettori, senza funzioni sulle stringhe e senza allocazione dinamica, altrimenti avrebbe poco senso.
Io comandi come strcpy e strcpa non li ho mai usati, ma poi non lo so, la proff ci ha chiesto se l'hanno scorso avevamo fatto le stringhe e noi gli abbiamo risposto di no e lei ci ha detto che per far riceve al computer delle parole intere bisogna trattarle come array di lettere.
@cionci: cosa è che ti sembra non vada tra il programma di carter e quello che devo fare io?
Thx a lot
carter100
23-09-2007, 16:49
Io comandi come strcpy e strcpa non li ho mai usati,
Allora come non detto, non leggere quello che ho scritto, devi tradurti i comandi in semplici istruzioni c perchè l'esercizio abbia un senso
Allora come non detto, non leggere quello che ho scritto, devi tradurti i comandi in semplici istruzioni c perchè l'esercizio abbia un senso
E che significa tradurre i comandi in semplici istruzioni c ?
Crei due vettori per due stringhe. Crei un vettore per la stringa risultante.
Leggi le stringhe da input.
- Con un while scorri la prima stringa fino al carattere \0 che è quello di fine stringa e copi ogni carattere nel vettore della stringa risultate, non devi copiare lo \0.
- Copi il carattere spazio nella stringa risultante.
- Con un while scorri anche la seconda stringa fino allo \0, questa volta copi anche lo \0 (per avere una stringa valida deve essere sempre presente come ultimo carattere) e copi il contenuto nella stringa risultante.
In queste tre operazioni userai sempre lo stesso indice per scorrere gli elementi del vettore risultante.
carter100
23-09-2007, 17:33
ad esempio per la strlen scorri la stringa fino al '\0' per sapere la sua dimensione; per la copia nella stringa c devi spostare ogni singolo elemento in ogni posizione delle 2 stringhe
Edit: come non detto, ti ha già spiegato tutto (tra l'altro anche meglio) Cionci
Grazie per l'aiuto, ma non capisco come in pratica posso eseguire l'operazione di copiare i caratteri da un array all'altro.
s3[j] = s1[i];
:doh: Che stupido così banale e non ci avevo pensato.
Thx. Appena ho tempo provo
Io ti ringrazio cionci, ma a me non viene, sarò che sbaglio qualche cosa io...
Ti costa troppo appena hai 2 minuti farmelo? :kiss: :D
Se te lo faccio non impari niente ;)
Prova intanto a copiare il primo vettore sul vettore risultato.
Se te lo faccio non impari niente ;)
Prova intanto a copiare il primo vettore sul vettore risultato.
:cry: Hai ragione!!!
Cmq ho trovato sul sito della uni di roma due righe sulle stringhe, c'è scritto un sacco di roba che la proff non ci ha detto. Me lo leggo e e poi ci provo
Mah...questo è quello che ho fatto (si prega di non prendere in giro, mettersi a ridere, chiamare amici e raccontargli questa barzelletta etc..)
#include <stdio.h>
#include <stdlib.h>
char word1[7],words[20];
int i;
int main(int argc, char *argv[])
{
printf("Esercizio prova Array di caratteri\n");
for(i=0;i<7;i++)
scanf("&s", &word1[i]);
words[i]=word1[i];
for(i=0;i<7;i++)
printf("%s", words[i]);
system("PAUSE");
return 0;
}
non viene dopo avergli inserito la parola ciao e premuto invio dice (null (null e lo ripete
No...parti da qui:
#include <stdio.h>
#include <stdlib.h>
char word1[7], words[20];
int i;
int main(int argc, char *argv[])
{
printf("Esercizio prova Array di caratteri\n");
scanf("%s", word1);
Ora devi copiare carattere per carattere da word1 in words, fino a che il carattere corrente è /0.
No...parti da qui:
#include <stdio.h>
#include <stdlib.h>
char word1[7], words[20];
int i;
int main(int argc, char *argv[])
{
printf("Esercizio prova Array di caratteri\n");
scanf("%s", word1);
Ora devi copiare carattere per carattere da word1 in words, fino a che il carattere corrente è /0.
Così?
words[i]=word1[i]
carter100
23-09-2007, 20:21
Così?
words[i]=word1[i]
sì, con i che va da 0 fino a che word[i]!='\0'
Scusatemi..., ma non capisco, magari lo rivediamo domani, con la mente più lucida (senza tre ore di matematica e fisica alle spalle ragiono meglio.):D
Ciao
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.