Tengo el siguiente (código aquí):

#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;
}

Luego, teniendo la entrada 5 6 2 1 8 8 1, tengo la siguiente salida:

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

¿De dónde es el último 0?

1
Serge 19 oct. 2020 a las 22:36

1 respuesta

La mejor respuesta

El c++ en &a[c++] incrementó c una última vez, por lo que después de ingresar los elementos n, c == n + 1. Es por eso que su código dice (8 els.) cuando ingresó 7 elementos. a[c - 1] == a[7] resultó ser cero.

3
ForceBru 19 oct. 2020 a las 19:39