Codice dei programmi nella directory:
///File: stringhe.c
//Autore:3^B - Data ultima modifica 28/2/2026
//Breve descrizione del programma: funzioni sulle stringhe
#include<stdio.h>
/**** X==DA codificare
1) void copia(char s[],char t[]); // s=t
2) void concatena(char s[], char t[]); // s=s+t
3) int lunghezza(char s[]); // se s=="ciao" ritorna 4
4) void maiuscolo(char s[]); // mette in maiuscolo i caratteri minuscoli
5) void minuscolo(char s[]); // mette in minuscolo i caratteri maiuscoli
6) int confronta(char s[], char t[]); /// ritorna 0 se le due stringe sono uguali,
< 0 se la prima e' minore, > 0 se la prima e' maggiore
X 7) void squeeze(char s[]); /// toglie gli spazi da s[],
se s=="ciao a tutti" diventa "ciaoatutti"
X 8) void reverse(char s[]); /// se s=="roma" diventa "amor"
X 9) int numero(char s[]); /// se s == "1234" ritorna 1234
X 10)int enumero(char s[]); /// ritorna vero se s e' un numero
Piu' difficili:
X 11) int doppie(char s[]); // verifica se in s[] ci sono, 2 elle, o 2 t, esempio "pollo" o "atto"
// ritona vero o falso
X 12) void PrimaLettera(char s[]); // se s[]="ciao a tutti" --> "Ciao A Tutti";
char ce(str[],t[]); // verifica se la stringa t[] e' contenuta in str[]
s="albero", t="ero" ritorna 1, t="albe" ritorna 1, t = "b" ritorna 1, t="albo" ritorna 0
DIFFICILE
X 13) void password(char pswd[], int maius, int minus, int cifre, int lung)
Si ritorna una password in pswd della lunghezza lung.
maius,minus,cifre sono 3 booleani (vero o falso) a seconda che la password contenga
o meno maiuscole, minuscole o cifre
Esempio pswd="Mabk9" se maius=1, minus=1, cifre=1, lung=5
pswd="XKBF" se maius=1, minus=0, cifre=0, lung=4
6 marzo 2026:
Altre abbastanza facili:
________________________
A) mettere in una stringa l'alfabeto minuscolo
B) int vocali(char s[]): ritorna il numero di vocali (minuscole) in una stringa
C) int consonanti(char s[]): ritorna il numero di consonanti (minuscole) in una stringa
D) void ebraico(char s[]): toglie le vocali (minuscole) da s[]
E) void anagramma(char s[]): ritorna un anagramma di s[]
F) void binario(char s[], int nbit): ritorna una stringa lunga nbit in binario
******/
#define MAX 256 // max lunghezza stringhe=255 Caratteri
void scrivi(char s[]) { /// visualizza una stringa, come puts()
int i;
for (i = 0; s[i] != '\0'; i++)
putchar(s[i]);
}
void copia(char s[], char t[]) { // come strcpy()
int i = 0;
while ((s[i] = t[i])) i++; /// copia t[i] in s[i] e poi s[i] diventa valore booleano, se '\0' == 0 e' falso
}
void concatena(char s[], char t[]) { /// come strcat()
int i = 0, j = 0;
while (s[i]) i++; /// si ferma quando s[i] == '\0'
while (t[j]) s[i++] = t[j++]; /// copia t in s, partendo dalla fine di s (la posizione del '\0' di s)
s[i] = '\0'; /// chiudo la stringa s
}
int lunghezza(char s[]) /// ritorna la lunghezza di una stringa come strlen()
{
int i;
for(i=0; s[i]; i++) /// s[i] diventa false, quando i indica la posizione del '\0'
;
return i;
}
int ce(char s[], char t[]){ /// verifica se la t[] e' contenuta nella s[] come strstr()
int i, j = 0, cont = 0;
for(i = 0; s[i]!='\0' && t[j] !='\0'; i++){ // ottimizzabile, posso togliere != '\0
if(s[i] == t[j])
cont++,j++;
else
j = 0,cont=0;
}
return cont == lunghezza(t); /// ritorna vero se sono uguali
}
int confronta(char s[], char t[]) /// ritorna 0 se le due stringe sono uguali, < 0 se la prima e' minore, > 0 se la prima e' maggiore
// come strcmp()
{
int i=0;
for(i=0; s[i] != '\0' && t[i] != '\0'; i++)
{
if(s[i] > t[i])
return 1;
else if(s[i] < t[i])
return -1;
}
return 0;
}
int confronta2(char s[], char t[]) /// ritorna 0 se le due stringe sono uguali, < 0 se la prima e' minore, > 0 se la prima e' maggiore
// come strcmp()
{
int i=0;
for(i=0; s[i] != '\0' && t[i] != '\0' && s[i]==t[i]; i++)
;
return s[i] - t[i];
}
int vocali(char s[])
{ // ritorna il numero di vocali in s[]
int i;
int conta_voc=0;
for(i=0; s[i] !='\0'; i++)
if(s[i]=='a' || s[i]=='e' || s[i]=='i' || s[i]=='o'|| s[i]=='u')
conta_voc=conta_voc+1;
return conta_voc;
}
void squeeze(char s[]) // toglie gli spazi dalla stringa s
{
int i;
int j=0; // indice in cui copio
for(i=0; s[i]!='\0'; i++)
if(s[i]!=' ')
{
s[j]=s[i];
j++;
}
s[j]='\0'; // chiudo la stringa
}
int main() {
char s1[MAX], s2[MAX], s3[MAX];
printf("Str1 che contiene->");
gets(s1);
printf("Str2 contenuta ->");
gets(s2);
printf("[%s] contenuta in [%s] == %d\n",s1,s2,ce(s1,s2));
printf("[%s] confrontata con [%s] == %d\n",s1,s2,confronta2(s1,s2));
copia(s3, s1); /// in s3 c'e' una copia di s1
printf("copia() di Str1 in s3=%s\n", s3);
concatena(s3,s2); /// s3=s3+s2
printf("concatena(s3,s2) =%s\n", s3);
printf("Vocali in %s = %d\n",s3,vocali(s3));
squeeze(s3);
printf("Squeeze di s3=%s\n",s3);
return 0;
}
///(Fine file: stringhe.c)
///File: string.c
#include <stdio.h>
#include <string.h>
#define MAX 256
int main()
{
char s1[MAX];
char s2[MAX];
printf("Stringa 1->");
gets(s1);
printf("Stringa 2->");
gets(s2);
//strcpy(s1,s2); /// s1=s2
strcat(s1,s2); /// s1=s1+s2
printf("Stringa 1->%s\n",s1);
printf("Strlen(s1)==%d\n", strlen(s1));
return 0;
}
///(Fine file: string.c)
///File: stringhe.html
Qui avete una documentazione sulle funzioni di string.h<br>
Occorre conoscere e saper usare:<br>
<h3><b>strcmp,strlen,strcpy,strcat,strstr,strchr</b></h3>
<hr>
<a href=https://www.w3schools.com/c/c_ref_string.php>Stringhe documentazione a w3scool</a>
///(Fine file: stringhe.html)