質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

1回答

475閲覧

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

miwawa.1

総合スコア6

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2023/12/03 15:27

実現したいこと

なぜ、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/ツールのバージョンなど)

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jimbe

2023/12/03 16:06

「-1 じゃない間ループ」としているのになぜ -1 が表示されると思われるのでしょうか。
setoppu

2023/12/03 17:08

表示しようとしているループのとき、jっていくつなんでしょう?
guest

回答1

0

ベストアンサー

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

正しく機能してますよ
2つ目のforに入るとき、j は100となってます。
-1に初期化しているのは、0から99までなので、100は0のままとなってますね

投稿2023/12/03 22:17

編集2023/12/03 22:18
y_waiwai

総合スコア88163

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

miwawa.1

2023/12/03 22:22

返信ありがとうございます。。助かりました。
jimbe

2023/12/04 04:41 編集

>100は0のまま num[100] を 0 にしている所もありませんから、不定値ではないてしょうか。
y_waiwai

2023/12/04 07:20

一応、pはグローバル変数となりますんで、起動時にゼロクリアされとります
jimbe

2023/12/04 15:39

なるほど、失礼しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問