なぜ、while(p[i].num[j]!=-1)が正しく機能していないのか教えてほしいです。

実現したいこと

なぜ、while(p[i].num[j]!=-1)が正しく機能していないのか教えてほしいです。

前提

struct b p[101]を-1で正しく初期化できているのかを確かめる際にprintfで調べたのですが、while(p[i].num[j]!=-1)のもとで printf("%d",p[i].num[j])をしても0が出力されるだけでした。なぜ、-1が出力されないのかを教えてほしいです。
#include <stdio.h>

struct b {
int parent;
int num[101];
int depth;
};

struct b p[101];

int main() {
int n1 = 0, n2 = 0, i = 0, j = 0, k = 0, w = 0, s = 0;

scanf("%d", &n1); for(i=0;i<n1;i++){ p[i].parent=-1; p[i].depth=-1; for(j=0;j<100;j++){ p[i].num[j]=-1; } } for(i=0;i<n1;i++){ while(p[i].num[j]!=-1){ printf("%d",p[i].num[j]); j++; } } return 0;

}

発生している問題・エラーメッセージ

正しい出力が得られないです。

該当のソースコード

#include <stdio.h> struct b { int parent; int num[101]; int depth; }; struct b p[101]; int main() { int n1 = 0, n2 = 0, i = 0, j = 0, k = 0, w = 0, s = 0; scanf("%d", &n1); for(i=0;i<n1;i++){ p[i].parent=-1; p[i].depth=-1; for(j=0;j<100;j++){ p[i].num[j]=-1; } } for(i=0;i<n1;i++){ while(p[i].num[j]!=-1){ printf("%d",p[i].num[j]); j++; } } return 0; }

試したこと

while(j<10)などと条件を変えたのですがうまくいきませんでした。
ループをすべて外して
printf("%d",p[0].num[0]);
printf("%d",p[0].num[1]);
などを試すと-1が出力されたので一応初期化は正しく行われていると思います

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

コメントを投稿

0 コメント