2013-05-13 2 views
-14

Я пытаюсь написать код C, который будет печатать структуру пирамиды на экране, что-то вроде этого.Значение мусора в массиве C

enter image description here

Соответствующий код, который я написал что-то вроде этого.

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

void printArrayFunc(char arr[9][5]) 
{ 
    int i,j; 
    printf("=========================================\nprinting the values\n"); 
    for (i = 0; i<5; i++) 
    { 
     for (j = 0; j<9;j++) 
     { 
      //printf("arr[%d][%d] = %d\n", i,j, arr[i][j]); 
      if (arr[i][j] == 1) 
       printf("*"); 
      else 
       printf(" "); 
     } 
     printf("\n"); 
    } 
} 


int main() 
{ 
    int i,j; 
    char arr[9][5] = {0}; 

    printf("============================\nfilling the values\n") ; 
    for (i=0;i<5;i++) 
    { 
     for (j= 4-i;j<=4+i;j++) 
     { 
      arr[i][j] = 1; 
      // printf("arr[%d][%d]= %d\n",i,j,arr[i][j]); 
     } 
     //printf("\n"); 
    } 
    printArrayFunc(arr); 

    return 0; 
} 

Это дает выход как

enter image description here

Я знаю, что я делаю некоторые глупые ошибки, но в этот момент, я не в состоянии найти то, что происходит не так. Позвольте мне услышать ваши комментарии по этому поводу.

+14

Вы не можете быть серьезным, разместив * скриншот * текстового окна. –

+0

По крайней мере ОП опубликовал свой код. – iamnotmaynard

+1

@KerrekSB Нет другого выбора, я работаю над virtualbox, и как-то общая папка не работает. –

ответ

7

В качестве аргумента функции:

char arr[9][5] 

В цикле:

for (i = 0; i<5; i++) { 
    for (j = 0; j<9;j++) { 
     if (arr[i][j] == 1) 

Вы перебросил позицию i и j. i должны идти от 0 до 9, j от 0 до 5.

1
if (arr[i][j] == 1) 
    printf("*"); 
else 
    printf(" "); 

Это утверждение дает значение мусора в этом операторе, если if condition верно, то распечатать еще заявление и когда еще сбывается печатает значение мусора ,

Смежные вопросы