c - 为什么我的程序没有使用以下凭据打印 empid?
问题描述
我已经使用我提供以下凭据的结构编写了一个员工数据库
员工姓名 sachin mirajkar 员工 ID abcde12345 员工工资为 123456789
对于此输入,只有员工 ID 未显示在屏幕上,请帮助
#include <stdio.h>
struct employees_database {
char name[30],salary[12],empid[11];
};
int main()
{
struct employees_database emp[1];
int i,j;
for(i=0;i<1;i++)
{
printf("Enter name of employee: ");
scanf("%[^\n]s",emp[i].name);
for(j=0;emp[i].name[j];j++)
{
if(!((emp[i].name[j]>'@' && emp[i].name[j]<'[')||(emp[i].name[j]>'`' && emp[i].name[j]<'{')||(emp[i].name[j]==' ')))
goto END;
}
printf("\n Enter employee id:");
scanf("%s",emp[i].empid);
for(j=0;emp[i].empid[j];j++)
{
if(!((emp[i].empid[j]>'@' && emp[i].empid[j]<'[')||(emp[i].empid[j]>'`' && emp[i].empid[j]<'{')||(emp[i].empid[j]>'/' && emp[i].empid[j]<':')))
goto END;
}
printf("\n Enter salary:");
scanf("%s",emp[i].salary);
for(j=0;emp[i].salary[j];j++)
{
if(!(emp[i].salary[j]>'/' && emp[i].salary[j]<':'))
goto END;
}
}
printf("\nEmployee ID \t Employee name \t\t Employee salary\n");
for(i=0;i<1;i++)
printf(" %s \t %s \t\t %s \n",emp[i].empid,emp[i].name,emp[i].salary);
return 0;
if(0)
END: printf("enter valid credentials\n");
}
解决方案
请检查您的 scanf() 函数调用。
改变
scanf("%[^\n]s",emp[i].name);
至
scanf("%s",emp[i].name);
应该做的伎俩
推荐阅读
- python - 根据其他两列的值将值应用于列
- django - Django Rest 框架中的自定义用户模型注册
- node.js - MongoDb / 查找 + 更新文档
- heroku - 如何防止 Heroku H12 在 Java REST 服务器上长时间运行进程的“请求超时”
- python - 运行多个或选择性 python 脚本的 shell 脚本
- xpath - 我如何才能在下表中找到仅用于“总病例”的 xpath 或 CSS 选择器(url =this https://www.worldometers.info/coronavirus/)
- javascript - 反应循环并创建元素
- java - java - 如何为其模型中文本的不同代码点自定义Java 9+ JTextField的视图?
- python - 在 python 中不使用函数或列表检查 min max
- javascript - 如何在声明的值中添加一个数字?