не может получить слово после пробела в C при использовании указателя на структуру - PullRequest
0 голосов
/ 17 июня 2020

при вводе имени, например: Alpha Beta, я не могу заставить scanf читать слово после пробела («Beta») ...

#include<stdio.h>

struct student
{
 int rollno, class; 
 char name[50], div[10];
};

int main()
{
struct student s1, *ptr;
ptr = &s1;
printf("\nEnter Student Class: ");
scanf("%d",&ptr->class);
printf("\nEnter Student Division: ");
scanf("%s",&ptr->div);
printf("\nEnter Student Rollno: ");
scanf("%d",&ptr->rollno);
printf("\nEnter Student Name: ");
scanf("%49s",&ptr->name);

printf("\nClass: %d\n", ptr->class);
printf("\nDivision: %s\n", ptr->div);
printf("\nRollno: %d\n", ptr->rollno);
printf("\nName: %s\n", ptr->name);
return 0;
}

при печати имени он возвращает только «Альфа», а не «Альфа-бета», что мне делать, чтобы он читал и альфа, и бета?

Ответы [ 2 ]

0 голосов
/ 17 июня 2020

Попробуйте следующее:

#include<stdio.h>

struct student
{
 int rollno, class; 
 char name[50], div[10];
};

int main()
{
struct student s1, *ptr;
ptr = &s1;

printf("\nEnter Student Class: ");
scanf("%d",&ptr->class);
printf("\nEnter Student Division: ");
scanf("%s",ptr->div);
printf("\nEnter Student Rollno: ");
scanf("%d",&ptr->rollno);
printf("\nEnter Student Name: ");
scanf(" %50[A-Za-z ]",ptr->name);

printf("\nClass: %d\n", ptr->class);
printf("\nDivision: %s\n", ptr->div);
printf("\nRollno: %d\n", ptr->rollno);
printf("\nName: %s\n", ptr->name);

return 0;
}

Выполнение:

./student

Enter Student Class: 1

Enter Student Division: 2

Enter Student Rollno: 3

Enter Student Name: Alpha Beta

Class: 1

Division: 2

Rollno: 3

Name: Alpha Beta
0 голосов
/ 17 июня 2020

Scanf () сканирует только не пробелы. Для получения пробелов вы также можете использовать fgets (). Пример -

fgets(&ptr->name, 20, stdin)

20 произвольно. Выберите, сколько символов вам нужно. Документы для справки - https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/fgets-fgetws?view=vs-2019

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...