я сделал программу, которая принимает строки (имена/фамилии), но вместо типичного выхода
Фил Snowken 3 лет, я получаю
Фил
Snowken
возраст 3Почему printf() при печати нескольких строк (% s) оставляет новую строку и как ее решить?
#include <stdio.h>
#define N 10
struct data{
char fname[30];
char lname[30];
int age;
};
main()
{
int i;
struct data base[N];
for(i=0;i<N;i++){
printf("\n-------------------------");
printf("\nPeople Data(%d remaining)\n",N-i);
printf("---------------------------\n\n");
printf("\nFirst Name ");
fgets(base[i].fname,30,stdin);
printf("\nLast Name ");
fgets(base[i].lname,30,stdin);
printf("\nAge ");
scanf(" %d",&(base[i].age));
fflush(stdin);
}
for(i=0;i<N;i++)
printf("%s %s Year:(%d)",base[i].fname,base[i].lname,base[i].age);
return 0;
}
Это может быть проблема компилятора Я не уверен – hitter
'fgets()' считывает максимум один меньше, чем * размер * символов из * поток * и сохраняет их в буфер, указанный на * s *. Чтение останавливается после EOF или новой строки. ** Если прочитана новая строка, она сохраняется в буфере. ** –
Удалите 'fflush (stdin)'. Он вызывает неопределенное поведение. – haccks