Fgets没有从stdin获取任何输入或stdin与输入不相等?

时间:2013-07-21 19:19:53

标签: objective-c console-application fgets

示例代码:

    char cnumb1[2];
    NSLog(@"Do you have an account already?(1 for Yes, 0 for no)");
    int c;
    //Flushes input
    while((c = getchar()) != '\n' && c != EOF);
    fgets(cnumb1, sizeof cnumb1, stdin);
    size_t length = strlen(cnumb1);
    if (cnumb1 [length-1] == '\n'){ // In case that the input string has 1 character plus '\n'
        cnumb1 [length-1] = '\0';} // Plus '\0', the '\n' isn't added and the if condition is false.
    NSString* string = [NSString stringWithUTF8String: cnumb1];
    NSLog(@"string:%@", string);

输入" 0" (编辑:出于某种原因,我需要按两次输入),我得到输出"字符串:" 据我所知,stdin没有正确设置。 另外,我开始没有刷新线,但是这引起了很多问题,因为我后来有更多的fgets,而stdin只是初始输入,所以我添加了这些。

为什么输入被设置为stdin? 还是完全是另一个问题?

1 个答案:

答案 0 :(得分:0)

该行

while((c = get char()) != '\n' && c != EOF);

需要直接在fgets之后,而不是之前。

另外,虽然没有直接回答问题,但最好还是

fgets(cnumb1, sizeof cnumb1, stdin);

然后在sizeof cnumb1中硬编码,正如@ H2CO3向我指出的那样。