首页 > 解决方案 > 使用指向结构的指针时无法在 C 中获取空格后的单词

问题描述

在输入名称时,例如: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;
}

打印名称时,它只返回“Alpha”,而不是“Alpha Beta”我应该怎么做才能让它同时读取 Alpha 和 Beta?

标签: cpointersstructure

解决方案


Scanf() 仅扫描非空格。也可以使用 fgets() 来获取空格。例子-

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

20是任意的。选择你需要多少个字符。文档供参考 - https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/fgets-fgetws?view=vs-2019


推荐阅读