scanf如何知道何时结束for循环?

时间:2018-04-27 14:10:15

标签: c loops scanf

我有以下代码:

value Payment-method ::= credit-card : { 
    type cb, 
    number "01234567890123456789", 
    expiry-date "042018"}

输入:

private void OnMouseDrag(){
    Vector3 newPos =  mainCameraTransform.position;
    newPos += mainCameraTransform.up * Input.GetAxis("Mouse Y");
    newPos += mainCameraTransform.right * Input.GetAxis("Mouse X");
    newPos = newPos.normalized * 10f;
    mainCameraTransform.position = newPos;
    mainCameraTransform.LookAt(Vector3.zero, mainCameraTransform.up);
}

它完美无缺。 但它也适用于下一个输入:

#include <stdio.h>

int main(int argc, char **argv) {
   int arr[2];
   arr[0] = 0;
   arr[1] = 0;
   int end = 0;
   int i;   
   for (i=0; i<2 ; i++){
      scanf(" num %d", &arr[i]);
   }

  scanf(" end %d", &end);
  printf("arr0 %d \n", arr[0]);
  printf("arr1 %d \n", arr[1]);
  printf("end  %d \n", end);

}

如何知道结束for循环并评估最后一次scanf?为什么它不会失败?

1 个答案:

答案 0 :(得分:1)

scanf在第二个例子中失败了。第二个循环迭代失败,返回0个项目,保持arr[1]不变。然后循环结束,最后scanf成功读取第二行输入。