示例代码:
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? 还是完全是另一个问题?
答案 0 :(得分:0)
该行
while((c = get char()) != '\n' && c != EOF);
需要直接在fgets之后,而不是之前。
另外,虽然没有直接回答问题,但最好还是
fgets(cnumb1, sizeof cnumb1, stdin);
然后在sizeof cnumb1中硬编码,正如@ H2CO3向我指出的那样。