假设我用这种方式输入数据。

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/

10-14 10:52