Allora, sto leggendo un pdf online sul linguaggio C, all'interno di esso ci sono anche degli esercizi, solo però non riesco a svolgere uno di essi perché non riesco a capire dove ho sbagliato.
L'esercizio mi chiede di stampare un rettangolo o un quadrato, e di scegliere anche i caratteri con cui tale rettangolo o quadrato deve essere composto (poi mi chiede anche di far visualizzare il rettangolo o quadrato per il numero di volte scelto dall'utente, ma per il momento non ci ho pensato a come fare. Vorrei prima risolvere questa cosa sulle variabili char)
L'esercizio l'ho provato a svolgere così:
- Codice: Seleziona tutto
#include <stdlib.h>
/* Permettere all'utente di comporre un rettangolo e di decidere anche i caratteri che devono comporre la cornice
e la parte interna del rettangolo e quante volte debba essere ripetuta la visualizzazione del rettangolo. */
int main(void) {
int a;
int b;
int c;
int x; /* numero di colonne scelto dall'utente */
int y; /* numero di righe scelto dall'utente */
char d; /* carattere cornice scelto dall'utente */
char e; /* carattere parte interna scelto dall'utente */
printf("Inserisci il numero delle colonne: ");
scanf("%d", &x);
printf("Inserisci il numero delle righe: ");
scanf("%d", &y);
printf("Inserisci il carattere della cornice: ");
scanf("%c", &d);
printf("Inserisci il carattere della parte interna: ");
scanf("%c", &e);
for(a=x; a>0; a--){
printf("%c ", d); /* viene stampata la prima riga orizzontale (parte alta della cornice) */
}
for(a=y; a>0; a--){
printf("\n%c", d); /* viene stampata la parte sinistra della cornice */
for(b=x-2; b>0; b--)
printf(" %c", e); /* viene stampata la parte interna */
for(c=1; c>0; c-- )
printf(" %c", d); /* viene stampata la parte destra della cornice */
}
printf("\n");
for(a=x; x>0; x--){
printf("%c ", d); /* viene stampata la parte bassa della cornice */
}
return 0;
}
Un'altra cosa che non capisco sulle variabili char è dato dal seguente programma:
- Codice: Seleziona tutto
#include <stdio.h>
#include <stdlib.h>
/* */
int main(void) {
char c;
for(c=0; c<=127; c++){
printf("%d = %c \n", c, c);
}
return 0;
}
E' un programma che dovrebbe permettere di far apparire tutti i caratteri del codice ASCII con i relativi numeri di appartenenza. Solo però, se la variabile è di tipo char, da il numero 127 in poi il programma inizia a stampare all'infinito. E stampa in modo strano. Se nel ciclo for metto <127, stampa bene fino a 126. Ma se appunto metto <=127, allora stampa all'infinito
Da notare che se la variabile la dichiaro int, allora stampa bene fino al numero desiderato.
E poi non ho capito perché mi suona l'allarme anche se non inserisco \a ! Ma che...?
Ho già visto i vari tutorial in internet sulle variabili char, ma il tema in questione non lo trattano. Potete spiegarmi voi cos'è che non va?

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)



. Ciò che per me adesso è un mistero è il primo programma. Per il primo intendo quello che ho postato all'inizio del messaggio. Quello che quando dovrei inserire le variabili char appaiono entrambi i printf e mi fa stampare solo la parte interna 


