首页 > 解决方案 > C scanf函数返回太多元素

问题描述

我有以下(代码在这里):

#include <stdio.h>

void print(char* m, int* a, int c){
    printf("%s (%d els.)\n", m, c);
    for(int i = 0; i < c; i++)
        printf("%d ", a[i]);
    printf("\n");       
}

int main(void) {
    int c = 0;
    int a[50];
    
    while(scanf("%d", &a[c++]) == 1);
    
    print("Init array: ", a, c);
    return 0;
}

然后有输入5 6 2 1 8 8 1,我有以下输出:

Init array:  (8 els.)
5 6 2 1 8 8 1 0 

最后一个出自哪里0

标签: cscanf

解决方案


c++in最后一次&a[c++]增加了一个,所以在你输入元素之后,. 这就是为什么您的代码在您输入 7 个元素时显示的原因。碰巧是零。cnc == n + 1(8 els.)a[c - 1] == a[7]


推荐阅读