【问题标题】:Take user input from scanf and add to a array?从 scanf 获取用户输入并添加到数组中?
【发布时间】:2016-05-18 08:18:23
【问题描述】:

我正在尝试创建一系列问题,我将在问答游戏中输入这些问题。我在使用 scanf 并将整个问题添加到数组时遇到问题。它只会输入我问题的第一个单词

示例:我想输入“棒球有多少个垒?”并将其输入到所有问题 [0] 中,然后要求将下一个问题输入到数组中,但我得到的只是来自 scanf 的“如何”。我想我需要将 scanf 输入转换为字符串,然后将对象添加到数组中。 任何帮助将非常感激。我对此很陌生。

        NSMutableArray *allquestions = [[NSMutableArray alloc]init];

        char *questions[200];
        int i =0;
        for (i = 0; i < 20; i++) {
            NSLog(@"Next question?");
            scanf("%s",&questions);

            NSLog(@"%s", &questions);
            [allquestions addObject:questions[i]];
    }

【问题讨论】:

    标签: objective-c arrays scanf


    【解决方案1】:

    我希望它对你有用:

    NSMutableArray *allquestions = [[NSMutableArray alloc]init];
    char questions[20][200]; // Can store 20 questions each of length 200
    
    //input each question
    for(int i=0;i<20;i++)
    {
       NSLog(@"Next question?");
       scanf("%[^\n]%*c",questions[i]);
       NSString *questionString = [NSString stringWithCString:questions[i] encoding:NSASCIIStringEncoding];
    
       [allquestions addObject:questionString];
    
    }
    
    //Print each string
    for(int i=0;i<20;i++)
    {
       printf("%s",questions[i]);
       printf("\n");
    }
    

    【讨论】:

    • 我收到 [allquestions addObject:questions[i]] 错误; ARC 不允许将非 Objective-C 指针类型“char *”隐式转换为“id_Nonnull”,并且不兼容的指针类型将“char [200]”发送到“id_Nonnull”类型的参数
    • 如果您仍然遇到任何问题,请告诉我?我试过运行这段代码,它工作正常。
    • 感谢您的帮助。现在它正在保存问题中的每个单词而不是整个问题。所以,如果我问“棒球有多少个垒?”。它保存了“How”、“many”、“bases”、“in”、“baseball?”,而不是整个问题。当你问这个问题时,它会循环运行你在问题中的单词数。所以,这个例子会问“下一个问题?” 5 次。
    • 是的,你是对的。只需将scanf("%s",questions[i]); 替换为scanf("%[^\n]%*c",questions[i]);。在第一个循环中。我已经更新了代码。它需要输入直到换行符('\n')到来。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-05
    • 2018-10-04
    • 2021-01-03
    相关资源
    最近更新 更多