嘗試通過控制檯創建註冊頁面。 我需要幾個輸入,我使用fgets,所以我需要刷新標準輸入。 堆棧溢出的許多類似問題在這裏重定向:http://c-faq.com/stdio/stdinflush2.html。 我使用該鏈接獲得了下面的代碼。但是,這並不實際工作。它表示用戶名:,然後當我輸入用戶名時,按回車鍵,它會轉到控制檯中一個新的空行,我可以輸入更多的空行。 這是怎麼回事? 我該如何解決它?使用fgets刷新stdin
編輯:添加代碼
NSLog(@"Do you have an account already?(1 for Yes, 0 for no)");
fgets(cnumb1, 2, stdin);
int c;
while((c = getchar()) != '\n' && c != EOF);
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];
if (string == 0) {
while(numb4 == 1) {
numb3 = 1;
while(numb3 == 1){
NSLog(@"Username:");
fgets(usercheck1, 13, stdin);
int c2;
while((c2 = getchar()) != '\n' && c2 != EOF);
size_t length1 = strlen(usercheck1);
if (usercheck1 [length1-1] == '\n'){ // In case that the input string has 12 characters plus '\n'
usercheck1 [length1-1] = '\0';} // Plus '\0', the '\n' isn't added and the if condition is false.
如果你使用fgets,你可以忘記標準輸入緩衝區,你不必清理它。 –
通常是的,但只有當用戶輸入的字符少於緩衝區可容納的字符時。 – onitake
@onitake有一次我問了這個問題後,我發現usercheck1(實際上並沒有在這段代碼中被定義)應該被定義爲char usercheck1 [大任意數] –