2016-04-01 20 views
2

Bu programın neden sadece pratik için yarattığımı, düzgün çalışmadığını bilmek istiyorum. Program, "dizi" olarak adlandırılan diziye yerleştirilen 5 sayı ister. Ayrıca, sayıları almak için, bir cicle ve scanf komutu için kullanılan ve diğeri, dizideki 5 sayıyı yazdırmak zorunda olan 2 adet VOID işlevi vardır. Sorun şu ki, basılan rakamlar sadece ilkler. 4 Neyin var? P.S. Cehaletim için özür dilerim ama yeni başlayan biriyim. Burada sizeof(int)4 eşittir programı çalıştırmak ortamında kodBu basit c programında sorun nedir?

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

bunu kontrol edebilir misiniz -> size = sizeof (int); -> size = sizeof (dizi); –

+1

"size = sizeeof (dizi)/sizeof" (* dizi); ' – Lundin

+0

' dizisi 'birkaç' int 'içermelidir. siz “sizeof” (int) 'yi yaparken - ör. sadece bir' int' boyutunu elde edin. Ayrıca - int veya boyut dizinin boyutu sizin için işe yaramıyor! İhtiyacınız olan şey dizideki sayıların sayısıdır. '' '' '' '' '' '' '' '' '' '' '' 'Komutunu kullanın ve öneriyi Lundin – fukanchik

cevap

6

bu.

dizinin büyüklüğü dikkate sizeofsize_t olan operatör tarafından döndürülen değeri tipini almak

size = sizeof(array)/sizeof(int); 

gibi hesaplanabilir. Yani bu tür dizinin büyüklüğü için kullanmak daha iyi olurdu. Ayrıca, 5 numaralı numara için bir bildirim sabitini de tanıtabilirsiniz. derleyici değişken uzunluk dizileri destekliyorsa

int array[N]; 

Veya benzeri bir diziden örnek

#define N 5 

için ve beyan olarak,

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

    //... 
+0

'dan kullanın ve eğer kullanmıyorsa,' #define size 5' kullanın (gerçekten SIZE kullanmalısınız) – FredK

0

sen hangi derleyici mimarisini yazabilirsiniz kodunuzun çalıştırılması 32 bittir, böylece int'nin boyutu 32 bit = 4 bayttır.

size = sizeof(int)

size = 4 dönecektir ve dört değerleri girmek için sadece mümkün olacak.

+0

@ Lundin'in bir çözüm için yorumuna bakın. – mkluwe