Codice dei programmi nella directory:
///File: StringheUnisci.c
/****Allenamento funzioni su stringhe.
void unisci1(char str1[], char str2[]) /// se str1="ciao!!" e str2="XYZ", str1 diventa "cXiYaZo!!"
//se str1="XYZ" str2="ciao!!", str1 diventa "XcYiZao!!"
void unisci2(char str1[], char str2[]) // se str1="ciao" e str2="ABCD" str1 diventa "ciaoDCBA"
void unisci3(char str1[], char str2[]) // se str1="ciao" e str2="ABCD" str1 diventa "CIAOabcd"
void unisci4(char str1[], char str2[]) // se str1="0123" e str2="456" str1 diventa "ABCDEFG" (A==0, B==1, C==2, ... J==9)
***/
#include<stdio.h>
#include <string.h>
/// se str1="ciao!!" e str2="XYZ", str1 diventa "cXiYaZo!!"
// se str1="XYZ" str2="ciao!!", str1 diventa "XcYiZao!!"
void unisci1(char str1[], char str2[]) {
char str3[128];
int i, j = 0;
for (i = 0; str1[i] != '\0' && str2[i] != '\0'; i++) {
// copio in str3 un carattere da str1 e un carattere da str2
str3[j++] = str1[i];
str3[j++] = str2[i];
}
if (str1[i] == '\0') // se la prima e' finita, copio la seconda
while (str2[i] != '\0')
str3[j++] = str2[i++];
else
while (str1[i] != '\0') // se la seconda e' finita, copio la prima
str3[j++] = str1[i++];
str3[j] = '\0'; // metto il terminatore
strcpy(str1,str3); // metto in str1 str3
}
void unisci2(char str1[], char str2[]) // se str1="ciao" e str2="ABCD" diventa "ciaoDCBA"
{
int l1=strlen(str1);
int l2=strlen(str2);
int i;
for(i=l2-1; i >=0; i--) // ciclo che parte dal fondo di str2 e compia in str1
str1[l1++]=str2[i];
str1[l1]='\0';
}
void unisci3(char str1[], char str2[]) // se str1="ciao" e str2="ABCD" str1 diventa "CIAOabcd"
{
int i,j;
for(i=0; str1[i]!='\0'; i++)
if(str1[i] >='a' && str1[i]<='z') str1[i]-=32;
for(j=0; str2[j]!='\0'; j++,i++) {
str1[i] = str2[j];
if (str1[i]>='A' && str1[i]<='Z') str1[i]+=32;
}
str1[i]='\0';
// Nota che NON cambio str2!!!
}
void unisci4(char str1[], char str2[]) // se str1="0123" e str2="456" str1 diventa "ABCDEFG" (A==0, B==1, C==2, ... J==9)
{
int i;
strcat(str1,str2);
for(i=0; str1[i]!='\0'; i++)
if(str1[i]>='0' && str1[i]<='9') str1[i]+='A'-'0'; //se era '0' diventa 'A', se '1' diventa 'B',....
}
int main() {
char str1[128];
char str2[128];
printf("Stringa 1->");
gets(str1);
printf("Stringa 2->");
gets(str2);
// decommenta la funzione che vuoi provare
//unisci1(str1, str2);
//unisci2(str1, str2);
unisci3(str1, str2);
//unisci4(str1, str2);
printf("Str1=[%s]\n",str1);
return 0;
}
///(Fine file: StringheUnisci.c)