Το Στέκι των Πληροφορικών

Γενικά => Γενικά Παιδαγωγικά, Επιστημονικά και Τεχνικά Θέματα => Μήνυμα ξεκίνησε από: Νικολας Πεγιος στις 11 Νοε 2021, 01:42:50 ΠΜ

Τίτλος: βοηθεια στην 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 (ευχαριστω οποιον κατσει και ασχοληθει λιγο :))
Τίτλος: Απ: βοηθεια στην C!!
Αποστολή από: dski στις 11 Νοε 2021, 04:28:36 ΜΜ
Το πρόβλημα βρίσκεται στις μεταβλητές 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);

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

Τίτλος: Απ: βοηθεια στην C!!
Αποστολή από: Νικολας Πεγιος στις 12 Νοε 2021, 12:56:16 ΜΜ
σας ευχαριστω!!!