2

我完全是新手,所以如果我在这里做了一些可怕的事情,请原谅我。

我试图以我在示例中指定的格式获取用户生日,但在该scanf部分中出现错误: format specified type char * but the argument has type NSString

我该如何解决?这是我的代码:

    int main(int argc, const char * argv[])
{

    @autoreleasepool {

        NSString *input;

        NSLog(@"Please enter your birthday, for example: 09-01-1984");

        scanf("%s", &input);

        NSDate *today = [NSDate date];

        NSDate *bDay = [NSDate dateWithNaturalLanguageString:input];

        NSLog(@"%lu", [bDay elapsedDays:today]);

    }
    return 0;
}
4

1 回答 1

3

sscanf()是 C 库NSString的一部分,也是 Foundation Objective-C 框架的一部分,你不能像那样混合它们。

试试这个:

int main(int argc, const char * argv[])
{
    @autoreleasepool {
        char input[80];
        NSLog(@"Please enter your birthday, for example: 09-01-1984");
        scanf("%s", input);
        NSDate *today = [NSDate date];
        NSDate *bDay = [NSDate dateWithNaturalLanguageString:[NSString stringWithUTF8String:input]];
        NSLog(@"%lu", [bDay elapsedDays:today]);
    }
    return 0;
}
于 2013-03-04T16:04:21.200 回答