PDA

Visualizza la versione completa : [C] Problema di stampa a schermo di stringhe


Nickri90
10-05-2008, 17:08
Buongiorno a tutti...è da poco che ho iniziato a tentare di scrivere qualche programma in C..ho trovato una piccola difficoltà che non riesco a superare nel seguente listato da me scritto:

#include <stdio.h>
#include <stdlib.h>

main()

{
int anno[2008];
char cogn[20][2], nom[20][2], ind[20][2];
int x;
for (x=1; x<=2; x++)
{
printf("\t\tAnagrafica classe\n\n");
printf("\nCognome: ");
scanf("%s",cogn[x]);
printf("\nNome: ");
scanf("%s",nom[x]);
printf("\nIndirizzo: ");
scanf("%s",ind[x]);
printf("\nAnno di nascita: ");
scanf("%d",&anno[x]);
system("cls");
}

for (x=1; x<=2; x++)

{
printf("%s %s %s %d\n",cogn[x],nom[x],ind[x],anno[x]);

}

getchar();
getchar();

}

In questo caso il programma chiede l'immissione di 2 nominativi, ma una volta stampati risultano sovrapposti (più precisamente il secondo sovrappone il primo nella prima riga mentre nella seconda viene stampato esclusivamente il secondo). Da cosa può essere dovuto questo problema? Scusate degli altri eventuali errori che ho fatto in fase di scrittura del listato del programma. Grazie mille...

MacApp
10-05-2008, 18:03
Ti consiglio di incominciare da un programma più semplice. Ad esempio, anziché chiedere due nominativi, uno solo.

oregon
10-05-2008, 18:06
Originariamente inviato da MacApp
Ti consiglio di incominciare da un programma più semplice. Ad esempio, anziché chiedere due nominativi, uno solo.

... e di ragionare sul senso di questa riga

int anno[2008];

Nickri90
10-05-2008, 19:41
Originariamente inviato da oregon
... e di ragionare sul senso di questa riga

int anno[2008];

Si...scusate..ho sbagliato a scrivere...

int anno[2]

così dovrebbe andare meglio....
comunque volevo solo capire dove sbaglio...ho provato ad eseguire il programma per un solo nominativo e nn trovo questi problemi..grazie ancora per chi mi ha risposto e per chi mi risponderà..

oregon
10-05-2008, 20:07
Intanto gli indici in C partono da 0 ... quindi x non deve contare da 1 a 2 ma da 0 a 1 ...

MacApp
10-05-2008, 20:16
e poi leggiti la seguente:
http://it.wikipedia.org/wiki/Array_in_C#Array_multidimensionali

specialmente quando scrive:


Quindi l'array int mioarray[10][20]; si può immaginare come un'array di 10 elementi nella quale ogni elemento è a sua volta un'array di 20 elementi di tipo intero.

Nickri90
11-05-2008, 10:42
Originariamente inviato da MacApp
e poi leggiti la seguente:
http://it.wikipedia.org/wiki/Array_in_C#Array_multidimensionali

ok...ho letto..però allora nn capisco come si possa fare un array di stringhe..per quanto riguarda gli array nn mi sembra ci siano errori sul listato....secondo me è un problema di stampa su console visto che risultano sovrapposti...ma ovviamente mi sbaglierò..




Intanto gli indici in C partono da 0 ... quindi x non deve contare da 1 a 2 ma da 0 a 1 ...

Sistemato pure questo..ma nn comporta alcuna differenza sul risultato finale..

Scusate ancora la mia ignoranza...e grazie ancora....

oregon
11-05-2008, 11:15
Quello che ti voleva far notare MacApp, ma che non hai notato e' che deve essere

char cogn[2][20], nom[2][20], ind[2][20];

Nickri90
11-05-2008, 19:21
Ah...ora capisco...cmq si...era quello il problema.....nn capivo questa cosa perchè prima del c avevo provato linguaggi nei queli le stringhe si trattavano come variabili normali.....non come array di caratteri...grazie per questo chiarimento che mi avete gentilmente dato...alla prossima..

Loading