c - 使用指向结构的指针时无法在 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?
解决方案
Scanf() 仅扫描非空格。也可以使用 fgets() 来获取空格。例子-
fgets(&ptr->name, 20, stdin)
20是任意的。选择你需要多少个字符。文档供参考 - https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/fgets-fgetws?view=vs-2019
推荐阅读
- javascript - 当我在 Mocha 框架中调用辅助函数时,它在我的 test.js 中调用时返回 Undefined
- kotlin - 如何解决 Kotlin 中的 IndexOutOfBoundException
- python - Telethon 仅在上周从电报组抓取
- python - 对象的方向被迭代
- solr - Hybris 创建具有产品网格和细化的内容/类别页面
- css - CSS 网格问题,网格布局缩小
- powerbi - 将数据源添加到 Powerbi 网关
- php - 在 Symfony 5 中序列化具有多对多关系的实体
- javascript - Nodejs如何安装.ttf字体文件?
- java - 如何将 log4j 每日日志轮换与基于文件大小的轮换和 maxbackup 结合起来?