c - 如果缺少某些字段,我想知道如何存储以分号分隔的文本的输入
问题描述
如果“oeb”和“7”之间缺少某些字段,我该如何跳过scanf?
#include <stdio.h>
int main ()
{
int,a,b,c;
char str1[200];
char str2[200];
char str[] ="1;2;oeb;;7;ed";
scanf("%d;%d;%[^;];%d;%[^\n]",&a,&b,str1,&c,str2);
return 0;
}
解决方案
你可以查看scanf的返回值,它返回有多少成功的输入发生了,你可以检查是否所有5个都成功完成,例如,
#include <stdio.h>
int main ()
{
int,a,b,c;
char str1[200];
char str2[200];
char str[] ="1;2;oeb;;7;ed";
if (scanf("%d;%d;%[^;];%d;%[^\n]",&a,&b,str1,&c,str2) != 5) {
// Error handling code here
}
else {
// If everything is ok, continues here,
}
return 0;
}
推荐阅读
- c - 这个 c 程序 null 安全吗?
- python - 熊猫多索引,删除条件仍然成立的行?
- nhibernate - NHibernate - 如何使用参数值记录命名参数化查询?
- mysql - 如何仅使用 mySQL 数据库找到与给定字符串最匹配的记录?
- node.js - 使用node.js时无法使用jsPDF添加图像
- android - 显示大小从系统设置更改影响我的布局奥利奥
- python - Lambda python 3.7:参数验证失败:\n参数维度[0]的类型无效
- reactjs - 我有一个错误,因为将 react-native 安装到我的应用程序中
- excel - Application.OnTime 在其他工作簿打开时重新打开工作簿
- css - 如何在primeng的冻结和解冻列表中设置列的不同样式和宽度