这个简单的c程序有什么问题吗?

时间:2016-04-01 14:34:32

标签: c

我想知道为什么这个我只为练习而创建的程序不能正常工作。该程序要求输入一个名为" array"的5个数字。还有2个VOID函数,一个用于获取数字,一个用于cicle和scanf指令,另一个用于打印数组中的5个数字。问题是印刷的数字只是第一次.4。错误的是什么? 附:对不起我的无知,但我是一个初学者。这是代码

#include <stdio.h>
#include <stdlib.h>

void
array_print(int array[],size_t size){
    int i;
    for(i=0;i<size;i++){
        printf("%i ",array[i]);
    }
}

void
get_num(int array[],size_t size){
    int i;
    for(i=0;i<size;i++){
        scanf("%i",&array[i]);
    }
}

int
main(){
    int array[5];
    size_t size;
    size=sizeof(int);
    printf("Insert 5 numbers: ");
    get_num(array,size);
    array_print(array,size);

    return 0;
}

2 个答案:

答案 0 :(得分:6)

在您运行程序的环境中,sizeof(int)等于4

可以像

一样计算数组的大小
size = sizeof( array ) / sizeof( int );

考虑运营商sizeof返回的值的类型为size_t。因此,最好将此类型用于数组的大小。

此外,您可以为数字5引入清单常量。例如

#define N 5

并将数组声明为

int array[N];

或者如果编译器支持可变长度数组,则可以编写

int main( void )
^^^^^^^^^^^^^^^^
{
    const size_t N = 5;
    int array[N];

    //...

答案 1 :(得分:0)

您执行代码的编译器的体系结构是32位,因此int的大小为32位= 4个字节。

size = sizeof(int) 将返回 size = 4 而你只能输入四个值。