在 C 中输入日期作为字符,无法解决如何避免 /

Nat*_*ing 2 c date scanf

#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 是因为我想保留前导零,并且我使用字符串来创建没有/.

dbu*_*ush 5

%s格式字符串中的第一个是捕获第一个空格字符之前的所有内容,这是您的整个日期字符串。在[^/]该立即前进它它匹配精确的字符。

您想要的是使用%[格式说明符将字符抓取到/.

scanf("%2[^/]%*c%2[^/]%*c%4s", &day, &month, &year);
Run Code Online (Sandbox Code Playgroud)

还要注意每个字段都包含一个字段宽度,以防止写入超过给定缓冲区的末尾。