#c #loops #struct
#c #циклы #структура
Вопрос:
Я написал этот код для structure study, который будет вводить количество студентов, запись которых должна быть сохранена, а затем печатать то же самое. Я не уверен, где именно я ошибаюсь.
#include<stdio.h>
struct stud{
int id;
char name[50];
float points;
}s[1000];
int main(){
int i,n;
scanf("%d",amp;n);
for(int i=0;i<n;i ){
scanf("%d",amp;s[i].id);
scanf("%c",s[i].name);
scanf("%f",amp;s[i].points);
}
for(i=0;i<n;i ){
printf("ID: %dn",s[i].id);
printf("First Name: %cn",s[i].name);
printf("Points: %fn",s[i].points);
}
return 0;
}
Комментарии:
1.
scanf("%c",s[i].name);
— почему вы читаете только один символ в имени?
Ответ №1:
Изменить
scanf("%c",s[i].name);
по крайней мере, для
scanf("Is",s[i].name);
и то же самое для printf()
вызова также. %c
для одного char
, для строки, вам понадобится %s
. Кроме того, не забудьте проверить возвращаемое значение scanf()
на успех.
При этом лучше использовать fgets()
для пользовательского ввода. Что-то вроде
if( fgets (s[i].name, sizeof(s[i].name), stdin) != NULL ) { /*......*/ }
Комментарии:
1. спасибо, это сработало, причина, по которой я использовал идентификатор %c, заключается в том, что я всегда немного путаюсь между строками и символами, я знаю, что строки не существуют в C, поэтому я всегда думаю, что определение массива символов должно решить эту проблему.