假设我用这种方式输入数据。
18-MAR-1995
现在我想用一个scanf()函数将这一个数据存储到不同的变量中。
假设变量是,
int dd,yy;
char month[3];
18将存储在dd变量中
MAR将存储在月变量中
1995将存储在yy变量中
我试过这个
scanf("%d[^-]%s[^-]%d",&dd,s,&yy);
IDEONE LINK HERE
最佳答案
注意scanf
语法不同于正则表达式;您似乎混淆了两者非特殊字符本身匹配,因此-
不需要特殊处理。此外,%s
总是需要以空格结尾的字符串(word),因此需要%3c
精确匹配三个字符。
所以正确的格式字符串是:
scanf("%d-%3c-%d", &dd, month, &yy);
请注意,不会向
'\0'
添加终止month
字节因此,这是定义良好的行为,但不要尝试将month
用作以空结尾的字符串。关于c - 如何在C中实现此定界符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44774359/