区分扫描一个字符或多个字符

时间:2018-12-03 23:53:53

标签: c char scanf

我需要区分一次扫描一个或多个字符,然后按Enter键确认(否CTRL + D)。

    do{
        scanf(" %c%c", &letters[i],&temp);
        i++;
      }while(temp != '\n');

它适用于一个字符,但是当我输入多个字符并按Enter时,它将等待另一个输入。我只需要按一次Enter就可以弄清楚。

1 个答案:

答案 0 :(得分:1)

  

区别扫描一个字符或多个字符

OP方法失败,因为" "占用了所有空白,包括'\n',并且可能不会被temp捕获。

// Troublesome code
do {
  scanf(" %c%c", &letters[i],&temp);
  i++;
} while(temp != '\n');

寻找'\n'。可以逐个字符地完成它。

#define N 2
char letters[N]; 
size_t i = 0;
int ch;
while ((ch = getchar()) != '\n' && ch != EOF) {  // Loop until \n found
  if (i < sizeof letters) {                      // Save up to N characters.
    letter[i++] = ch;
  }
}

// Limit output with a precision                     v----------vvvvvvv 
printf("%zu characters entered: The first few are <%.*s>\n", i, (int) i, letters);