代码之家  ›  专栏  ›  技术社区  ›  Stelios Papamichail

scanf在缓冲区中保留\n字符

  •  1
  • Stelios Papamichail  · 技术社区  · 7 年前

    integers 具有 scanf 扫描 离开 \n scanf(" %d\n",&var); 但这对我没用。我该怎么办?为什么会这样?

    #include <stdio.h>
    
    int main(void) {
        int A[2][3] = {};
        int B[3][2] = {};
        int i,j;
        for(i=0; i < 2;i++) {
            for(j=0; j < 3;j++) {
                scanf(" %d\n", &A[i][j]);
                getchar();
            }
        }
        return 0;
    }
    
    2 回复  |  直到 7 年前
        1
  •  2
  •   dbush    7 年前

    这个 \n \不

    按以下方式更改格式字符串:

    scanf("%d", &A[i][j]);
    

    这个 %d 格式说明符隐式地丢弃任何前导空格字符,因此不需要前导空格(只有 %c

        2
  •  1
  •   mch    7 年前

    %d 忽略数字前的空格。只有当你读一个数字时才有这个问题 %d级 (在缓冲区中保留换行符)并希望用 %c 之后在这里,你必须在 ,以便忽略缓冲区中的换行符。

    当你想读数字时,你只能用 scanf("%d", &var); .