βοηθεια στην C!!

Ξεκίνησε από Νικολας Πεγιος, 11 Νοε 2021, 01:42:50 ΠΜ

« προηγούμενο - επόμενο »

Νικολας Πεγιος

include<stdio.h>


int main()

{

int Etos;
char Mhnas,Arxiko;
float Ypsos;

printf("Dwse Etos Mhna Arxiko Ypsos\n\n");

scanf("%d %s %s %f",&Etos,&Mhnas,&Arxiko,&Ypsos);

printf("%d %s %s %f",Etos,Mhnas,Arxiko,Ypsos  );



   return 0;
}


Γεια σας ειμαι ενας πρωτοετης φοιτητης και θα ηθελα να γνωριζω για ποιον λογο δεν μου εμφανιζει τα αποτελεσματα η printf (ευχαριστω οποιον κατσει και ασχοληθει λιγο :))

dski

Το πρόβλημα βρίσκεται στις μεταβλητές Mhnas και Arxiko. Τις δηλώνεις τύπου char που στην ουσία είναι τύπος ακεραίου και χρησιμοποιείται για την αποθήκευση ενός χαρακτήρα ενώ στην printf ζητάς να τυπωθεί %s δηλαδή string (συμβολοσειρά) που περιμένει δείκτη σε char (char *)

Είτε θα αλλάξεις την οδηγία από %s σε %c (οπότε η μεταβλητή θα δέχεται έναν χαρακτήρα μόνο) είτε, αν θες να μπορείς να εισάγεις κάποια συμβολοσειρά (δύο ή περισσότερων χαρακτήρων), αλλάζεις τη δήλωση σε π.χ.:

char Mhnas[100], Arxiko[100];


δηλαδή τις μετατρέπεις σε πίνακες χαρακτήρων και τροποποιείς την scanf αφαιρώντας το & από τις μεταβλητές Mhnas και Arxiko (αφού το όνομα του πίνακα αντιστοιχεί στη διεύθυνση του 1ου του στοιχείου):

scanf("%d %s %s %f",&Etos,Mhnas,Arxiko,&Ypsos);


Ελπίζω να βοήθησα.


Νικολας Πεγιος