私はこのタイプのループのさまざまな順列を試しました。文字を静的配列にコピーするprintf奇妙な出力を生成する
char hrstdesc[50][50];
char hrstread[50][50];
int i = 0;
for (hfree = hentry; hfree; hfree = hfree->prev) {
if (filterentry(hfree)) {
continue;
}
strcpy(&hrstdesc[i][0], hfree->hrstdesc);
printf("%s \n", hrstdesc[i]);
i++;
}
printf("%s \n", hrstdesc[1]);
出力され、
/run/media/username/archive
/home
/var
/
/ho/va/
最初の4行は、printf("%s \n", srtdesc);
、から来て、私が期待するものです。
最後の行は/home
と表示されますが、代わりに/ho/va/
と表示されます。あなたがリンクされたファイルで
https://github.com/techzilla/check_snmp_extras/blob/master/src/check_snmp_disks.c
(hentry = hentry;)??? –
'hentry = hentry'なぜあなたはそれをしますか? – babon
@babon、私を修正してください、私はそれを非常に感謝します。私はちょうどあなたがこの構造体をループするときにしなければならなかったものだと思った。私はより良い練習に非常に興味があります。 私は、このようなループを実行するために一時変数を作成する人がいるのを見たことがありますが、その理由はわかりませんでした。 ''(hfree = hentry; hfree; hfree = hfree-> prev){' – TechZilla