実現したいこと
なぜ、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/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー