#include <stdio.h>
int main(void)
{
char day[3] = {""};
char month[3] = {""};
char year[5] = {""};
printf("Date of Birth: ");
scanf("%s[^/]%*c%s[^/]%*c%s", &day, &month, &year);
printf("\n1. %s", day);
printf("\n2. %s", month);
printf("\n3. %s", year);
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试输入日期并丢弃/. 目前,整个条目存储在 char day[3] 中,其他三个字符留空。
我使用 char 是因为我想保留前导零,并且我使用字符串来创建没有/.
%s格式字符串中的第一个是捕获第一个空格字符之前的所有内容,这是您的整个日期字符串。在[^/]该立即前进它它匹配精确的字符。
您想要的是使用%[格式说明符将字符抓取到/.
scanf("%2[^/]%*c%2[^/]%*c%4s", &day, &month, &year);
Run Code Online (Sandbox Code Playgroud)
还要注意每个字段都包含一个字段宽度,以防止写入超过给定缓冲区的末尾。