PDA

Visualizza la versione completa : [C] Un problemuccio con le stringhe...


Wallo
08-05-2002, 19:09
Salve gente, allora, il problema è il seguente, vi sarei grato se mi aiutaste a risolverlo.

Dunque, quello che devo fare è copiare alcuni carrateri presenti in una stringa, in un'altra stringa. Siccome non sono tutti i caratteri che devono essere copiati, ovviamente la strcpy non va bene. Ho provato anche con altre funzioni, tra cui una che copia tutti i caratteri fino a un dato punto della stringa, ma nessuna di queste ha risolto il problema.

Nel mio caso, devo copiare tutte le vocali. Quindi, una volta definita la stringa: char voc[10]={'A','a','E','e', ecc...}, la condizione, dopo un for, è

if(string[ind]==voc[ind1])
????????

Ora, cosa dovrei mettere al posto dei punti interrogativi per fare quello che vi ho chiesto?

Vi ringrazio anticipatamente.

Mandrake978
09-05-2002, 09:44
Non so se ti può essere d'aiuto.. potresti fare una serie di if e confrontare il singolo char con "a" "e"... ecc.. attaccarli ad una stringa e.. basta !
Spero di averti dato un'idea !
Ciao

luigifumero
09-05-2002, 11:09
Ciao potresti fare che copiarla direttamente, tipo:

char original[NCHAR];
char newString[NCHAR];
int pos = 0;

for(int i = 0; i < NCHAR; i++)
{
if( IsVocale(original[i]))
{
newString[pos] = original[i];
pos++;
}
}

poi quando hai finito metti la fine della stringa si newString[pos]

ciao

Reale_Augello
09-05-2002, 15:56
... così:

char vocali[]="aeiouAEIOU";
char tuastr[20];
char output[20];

for (i=0; i<strlen(tuastr); i++)
{
for (j=0; j<strlen(vocali); j++)
{
if (vocali[j]==tuastr[i]) output[i]=tuastr[i];
}
}
output[i+1]='\0';

Magari ti formatta anche il disco fisso, non so... ;)

luigifumero
09-05-2002, 16:17
...... output[i]=tuastr[i];

facendo così però alla fine lasci dei buchi in output che non penso fosse quello che Wallo voleva fare.

ciao

Shamar
09-05-2002, 22:24
char *vocali="aeiouAEIOU";
char stringa[20], output[20], *str1 , *str2, *str3;

str1 = stringa[0];
str2 = vocali[0];
str3 = output[0];

while(str1++)
while(str2++)
(*str1 == *str2) ? *(str3++) = *str1


Mi sembra simpatico, ma chissa se funziona?

Fatemi sapere che sono troppo stanco per provare a provarlo dopo 15 ore di lavoro! :(


Ciao e a presto
Shamar

Shamar
09-05-2002, 22:26
No, non funziona, ma se provate a riscriverlo con 2 for secondo me può funzionare!


Ciao e a presto
Shamar

Shamar
09-05-2002, 22:37
char *vocali="aeiouAEIOU";
char input[20], output[20], *str1 , *str2, *str3;

for(str1=input[0], str1<=stringa[20], str1++)
for(str2=vocali[0], str2<=vocali[20], str2++)
{
(*str2==*str1) ? str3++;
(*str2==*str1) ? *str3=*str2;
}


Mo vado a casa!!!!


Shamar

Loading